mysql - mysql 存储过程中出现错误#1064

标签 mysql stored-procedures phpmyadmin

如果听不懂我的英语是因为我的英语不好......我会尽力解释我的问题。

我尝试在 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

最佳答案

这会有所帮助。尝试一次。

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

关于mysql - mysql 存储过程中出现错误#1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31225207/

相关文章:

mysql - 连接两个日期之间的 MAX id

mysql - 如何将 longblob 转换为可读格式

mysql - WHERE 子句后跟 OR 然后再 WHERE

mysql - 在 Homestead 盒子上设置 phpmyadmin

从 phpmyadmin 导出时 MySql GROUP_CONCAT 失败

MySQL 从多个结构相同的表中选择

stored-procedures - sql server精简版功能

.net - VB.net:为什么我不能从我自己的存储过程中获取返回值?

sql - Mysql 是否与 mssql 中的 @@ROWCOUNT 等效?

php - 创建连接表问题!