【问题标题】:Missing semicolon in stored procedure?存储过程中缺少分号?
【发布时间】:2018-01-25 14:29:01
【问题描述】:

这是我的代码

    CREATE  PROCEDURE busqueda
(
nombreq VARCHAR(200),
grupo VARCHAR(200)
)
BEGIN
SELECT nombre = nombreq FROM tabla1
END

END 中有这个错误

语法错误:缺少分号

最后加分号是不行的

【问题讨论】:

  • SELECT 查询“SELECT nombre = nombreq FROM tabla1;”末尾缺少分号

标签: mysql sql stored-procedures


【解决方案1】:

这是完整的正确代码:

    delimiter $$
    CREATE  PROCEDURE busqueda
    (
    nombreq VARCHAR(200),
    grupo VARCHAR(200)
    )
    BEGIN
    SELECT nombre = nombreq FROM tabla1;
    END
    $$
delimiter ;

【讨论】:

    【解决方案2】:

    我怀疑这是您真正想要的代码。我的最佳猜测是:

    DELIMITER $$
    CREATE  PROCEDURE busqueda (
        OUT out_nombre VARCHAR(200),
        IN in_grupo VARCHAR(200)
    )
    BEGIN
        SELECT in_nombre := t1.nombreq
        FROM tabla1 t1
        WHERE t1.grupo = in_grupo;
    END;
    
    DELIMITER ;
    

    注意事项:

    • 注意输入参数的命名约定。这样可以更轻松地避免存储过程中查询中的命名冲突。
    • 您的代码将任意nombreq 分配给参数。我添加了一个WHERE 子句。
    • 我想 -- 因为您正在设置值 -- 您希望更改输入参数的值。
    • SELECT 中,赋值使用:=,而不是=(或into)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多