存储过程发出语法错误

Posted

技术标签:

【中文标题】存储过程发出语法错误【英文标题】:stored procedure is issuing syntax error 【发布时间】:2015-06-10 12:04:23 【问题描述】:

我正在尝试使用 phpmyadmin 创建一个 mysql 存储过程:

CREATE PROCEDURE AddTableColumn()
BEGIN 

   IF (SELECT COUNT (table_name) 
      FROM information_schema.tables
      WHERE table_name IN ('authors', 'publishers') = 2 ) 
        print 'specified tables exist...';
   ELSE 
        print 'specified tables unavailable...';
   END IF;

END​

上面的代码是一个sn-p,它应该搜索信息模式 对于作者和出版商表的可用性, 然后继续在每个表中添加新列(如果存在)。

打印语句用于调试目的。当我点击 GO 命令,这是错误信息:

MySQL 说:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 在'打印'可用...'附近; ELSE print 'unavail...';万一; END'在行 7.

我做错了什么?我什至尝试过其他代码作为测试, 所有失败并出现相同的错误。代码很简单:

BEGIN 

   IF (6 > 4) 
        print 'greater';
   ELSE 
        print 'lesser';
   END IF;

END ​

全部失败。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

'print'MySQL 中无法识别。

如果您想读回输出,只需在 SP 中使用 select

如下更改你的 SP 部分:

DECLARE found_status VARCHAR(255) DEFAULT NULL;
IF .... 
    SELECT 'specified tables exist...' INTO found_status;
ELSE 
    SELECT 'specified tables unavailable...' INTO found_status;
END IF;  

SELECT found_status;

【讨论】:

以上是关于存储过程发出语法错误的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver存储过程语法错误的问题

MySQL:存储过程语法错误

创建存储过程时的语法错误

Mysql语法错误创建存储过程

存储过程错误附近的语法不正确

试图在 Mysql 中创建存储过程的语法错误?