[英]Error #1064 in stored procedure in mysql
如果不能理解我的英语是因为我的英语不好。。。我将尽力解释我的问题。
我尝试在mysql(phpmyadmin)中创建一个存储过程,但出现此错误:
#1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以在第3行的''附近使用正确的语法
这是存储过程的代码:
CREATE PROCEDURE `sp_user_insert` (IN `sp_email` varchar(255), IN `sp_password` text, IN `sp_role` int) BEGIN DECLARE `sp_encrypted_password` text; SET `sp_encrypted_password` = SELECT MD5(`sp_encrypted_password`); INSERT INTO `user`( `user_email`, `user_password`, `user_role_id`) VALUES ( `sp_email`, `sp_encrypted_password`, `sp_role`); END
这是表用户的代码:
CREATE TABLE IF NOT EXISTS `user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_email` varchar(255) NOT NULL, `user_password` text NOT NULL, `user_role_id` int(11) NOT NULL, PRIMARY KEY (`user_id`) );
PD:对不起,我的英语不好:C
看看是否有帮助,您不需要SELECT
即可获取MD5哈希。
CREATE PROCEDURE `sp_user_insert` (IN `sp_email` varchar(255), IN `sp_password` text, IN `sp_role` int)
BEGIN
DECLARE `sp_encrypted_password` text;
SET `sp_encrypted_password` = MD5(`sp_encrypted_password`);
INSERT INTO `user`( `user_email`, `user_password`, `user_role_id`) VALUES ( `sp_email`, `sp_encrypted_password`, `sp_role`);
END
这会有所帮助。 尝试一次。
DELIMITER $$;
CREATE PROCEDURE sp_user_insert (IN sp_email varchar(255), IN sp_password TEXT, IN sp_role INT(20))
BEGIN
DECLARE sp_encrypted_password TEXT;
SELECT MD5(sp_password) INTO sp_encrypted_password;
INSERT INTO user( user_email, user_password, user_role_id) VALUES ( sp_email, sp_encrypted_password, sp_role);
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.