sql - Mysql语法帮助

标签 sql mysql stored-procedures

我在 MySQL 中编写 SP 时遇到问题。从我在网上可以读到的内容来看,以下内容应该有效,但事实并非如此。我使用Mysql v.5.1.35

CREATE DEFINER=`My_Username`@`%` PROCEDURE `ChangePassword`(IN SPusername VARCHAR(100),
    IN SPoldPassword VARCHAR(100),
    IN SPnewPassword VARCHAR(100))
BEGIN
IF EXISTS(SELECT Password_Hash 
                FROM Customer
                WHERE SPusername = Email 
                AND  SPoldPassword = Password_Hashed)
THEN
UPDATE Customer
SET Password_Hashed = SPnewPassword
END IF;
END;

最佳答案

我认为这是因为过程名称不应该在''s中。

在第一行中,尝试以下操作:

CREATE DEFINER='My_Username'@'%' PROCEDURE ChangePassword(IN SPusername VARCHAR(100),

哦...并且记得还要查看旁观者关于 UPDATE 语句中的 WHERE 子句的答案。如果不扩展 WHERE 子句,所有密码每次都会设置为相同的内容!他的建议很好! (尽管 SQL 语句可以工作):-)

问候
西格斯特德

PS:完整的查询(带有分隔符和旁观者的建议):

DELIMITER //
CREATE DEFINER='My_Username'@'%' PROCEDURE ChangePassword(
    IN SPusername VARCHAR(100),
    IN SPoldPassword VARCHAR(100),
    IN SPnewPassword VARCHAR(100))
BEGIN
IF EXISTS(SELECT Password_Hash 
          FROM Customer
          WHERE SPusername = Email 
          AND  SPoldPassword = Password_Hashed)
THEN
  UPDATE Customer
  SET Password_Hashed = SPnewPassword
  WHERE SPusername = Email 
  AND  SPoldPassword = Password_Hashed;
END IF;
END//
DELIMITER ;

关于sql - Mysql语法帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873541/

相关文章:

MySQL导入问题

MySQL查询输出表中带有列标题的数据

entity-framework - Entity Framework 中的存储过程

mysql - 如何选择特定月份具有相同范围价格的产品?

php - 我想显示图像以及从数据库中检索的文本

两个 SELECT 语句之间的 MySQL 笛卡尔积

MySQL 存储过程分隔符错误

sql - 分解整数范围以加入 SQL

sql - SQL Server中如何去掉 '0'开头和结尾的字符

sql - 如何在SQL中使用group by生成json数据