我正在尝试根据某些传递参数的值在MySQL存储过程中创建表。我的代码如下:

DELIMITER //

CREATE PROCEDURE testifelse(IN CurrentGPA varchar(40), IN CurrentGPAValue varchar(40))
    BEGIN
        IF CurrentGPAValue IS NULL THEN CREATE TABLE tableCurrentGPA(SELECT DISTINCT u.user_id AS uid FROM users u);
        ELSE CREATE TABLE tableCurrentGPA(SELECT DISTINCT udata.user_id AS uid FROM userdata udata WHERE udata.userDataTypeName = CurrentGPA AND udata.userDataText = CurrentGPAValue);
    END


我收到一条错误消息:#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以找到在第5行的''附近使用的正确语法。

我不确定在这里我做错了什么。语法对我来说看起来不错,查询似乎格式正确。

最佳答案

您缺少END IF语句。

CREATE PROCEDURE testifelse(IN CurrentGPA varchar(40), IN CurrentGPAValue varchar(40))
    BEGIN
        IF CurrentGPAValue IS NULL THEN CREATE TABLE tableCurrentGPA(SELECT DISTINCT u.user_id AS uid FROM users u);
        ELSE CREATE TABLE tableCurrentGPA(SELECT DISTINCT udata.user_id AS uid FROM userdata udata WHERE udata.userDataTypeName = CurrentGPA AND udata.userDataText = CurrentGPAValue);
        END IF;
    END

关于mysql - if/else块中创建表的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15817849/

10-10 19:16