【问题标题】:Having SQL Syntax error in MySQL stored procedureMySQL 存储过程中出现 SQL 语法错误
【发布时间】:2018-04-06 22:26:08
【问题描述】:

我是 MySQL 存储过程的新手。不知道为什么我会收到以下错误。请帮忙调试一下。

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 'INTO this_user_id, this_user_fullname FROM user_master WHERE user_username = @th' 附近使用正确的语法

DELIMITER $$
CREATE PROCEDURE loginUser(IN this_user_name VARCHAR(100), IN this_user_password VARCHAR(100), OUT this_user_id BIGINT(11), OUT this_user_fullname VARCHAR(100))
BEGIN
  IF NOT EXISTS (SELECT user_id, user_full_name INTO this_user_id, this_user_fullname FROM user_master WHERE user_username = this_user_name AND user_password = this_user_password) THEN
    SET this_user_id = NULL;
    SET this_user_fullname = NULL;
  END IF;
END$$

我的表结构是

表名:user_master

user_id bigint(11) 否
user_full_name varchar(100) 是 NULL
user_username varchar(60) 是 NULL
user_password varchar(45) 是 NULL
user_security_question varchar(225) 是 NULL
user_security_answer varchar(255) 是 NULL
user_salt varchar(30) 是 NULL
user_status enum('ACTIVE', 'SUSPENDED', 'PENDING') 是 NULL
user_last_login_time 时间戳 是 NULL
user_last_logout_time 时间戳 是 NULL

索引文档

PRIMARY BTREE 是 否 user_id 4 A 否
user_username_UNIQUE BTREE 是 否 user_username 4 A 是

【问题讨论】:

    标签: mysql sql stored-procedures


    【解决方案1】:

    这样做怎么样?

    BEGIN
        -- Initialize the variables
        SET this_user_id = NULL;
        SET this_user_fullname = NULL;
    
        -- Set them
        SELECT user_id, user_full_name
        INTO this_user_id, this_user_fullname
        FROM user_master
        WHERE user_username = this_user_name AND user_password = this_user_password;
    
       . . .
    END;
    

    【讨论】:

    • 感谢您的回答。不错的主意,但我仍然想知道我在哪里犯了错误。
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多