我在 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/