【问题标题】:Why do SQL declare fail?为什么 SQL 声明失败?
【发布时间】:2012-11-27 13:23:09
【问题描述】:

我有这段代码:

BEGIN
    DECLARE @NewLine CHAR(2)
    SET @NewLine = CHAR(13)+CHAR(10)
END

当我在 phpmyadmin 中运行它时,我得到了这个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE @NewLine CHAR(2) SET @NewLine = CHAR(13) + CHAR(10) END' at line 2

我在 Google 上使用了大约 2 个小时,但没有任何运气。据我所知,它应该是正确的语法。 有人请帮忙

【问题讨论】:

    标签: mysql sql declare


    【解决方案1】:

    IFWHEN 等流语句只允许在 MySQL 的存储过程或函数中使用。 BEGINEND 是此类语句的分隔符。

    将该代码放入一个过程中,它应该可以工作。

    编辑

    示例过程

    DELIMITER // 
    CREATE PROCEDURE newline_proc(input varchar(1000))
    BEGIN
      declare newline char(2);
      select CHAR(13)+CHAR(10) into newline;
      ...
    END//
    DELIMITER ;
    

    【讨论】:

    • 来自dev.mysql.com/doc/refman/5.0/en/declare.html DECLARE 只允许在 BEGIN ... END 复合语句中,并且必须在任何其他语句之前的开头。
    • 这就是为什么没有过程或函数也不能使用DECLARE
    • 我已经在手册中阅读了这一点,并且 IS 按照他们的建议开始/结束...如何使用适用于我的情况的程序或功能?
    • 你想达到什么目的?您想在查询中使用您的代码吗?
    • 是的,这个想法是用替换功能更新表中的多个字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多