【问题标题】:Error #1064 in stored procedure in mysqlmysql 存储过程中的错误 #1064
【发布时间】:2015-09-22 09:09:24
【问题描述】:

如果不能理解我的英语是因为我的英语不好......我会尽量解释我的问题。

我尝试在 mysql (phpmyadmin) 中创建存储过程,但出现此错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 3 行的 '' 附近使用的正确语法

这是存储过程的代码:

创建过程`sp_user_insert`(IN `sp_email` varchar(255),IN `sp_password` 文本,IN `sp_role` int) 开始 DECLARE `sp_encrypted_pa​​ssword` 文本; SET `sp_encrypted_pa​​ssword` = SELECT MD5(`sp_encrypted_pa​​ssword`); 插入`用户`(`user_email`,`user_password`,`user_role_id`)值(`sp_email`,`sp_encrypted_pa​​ssword`,`sp_role`); 结尾

这是表用户的代码:

如果不存在“用户”,则创建表( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_email` varchar(255) NOT NULL, `user_password` 文本不为空, `user_role_id` int(11) NOT NULL, 主键(`user_id`) );

PD:对不起,我的英语不好:C

【问题讨论】:

    标签: mysql stored-procedures phpmyadmin


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      看看这是否有帮助,您不需要 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
      

      【讨论】:

      • 不工作 :C ** #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法 **
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2012-08-02
      • 2014-12-17
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      相关资源
      最近更新 更多