【问题标题】:How do I troubleshoot this stored procedure?如何解决此存储过程?
【发布时间】:2022-08-11 17:41:43
【问题描述】:

我写了一个存储过程,但无论我做什么,错误都不会消失。

MySQL错误是: #1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 \'DECLARE cr CURSOR For (SELECT id,subtitle,price FROM book) 附近使用正确的语法 ...\' 在第 4 行

我写的代码如下:

‍‍‍``` 分隔符 //

CREATE PROCEDURE show_book()
BEGIN
    DECLARE @id int(11), @subtitle varchar(30), @price int(7)
    DECLARE cr CURSOR For SELECT id,subtitle,price FROM book
                OPEN cr
                    FETCH NEXT FROM cr INTO @id,@subtitle,@price
                    WHILE(@@FETCH_STATUS=0)
                    BEGIN
                        Print(@id + \' \'+ @subtitle + \' \'+ Cast(@price as varchar(7)))
                        FETCH NEXT FROM cr INTO @id,@subtitle,@price
                    END
                CLOSE cr
    DEALLOCATE cr
END //

分隔符;

    标签: mysql database-cursor


    【解决方案1】:

    要解决的问题:

    • 在 MySQL 局部变量中不要使用@-前缀。
    • 对每个变量使用单独的 DECLARE
    • 不需要使用int(11)/int(7),使用int即可。他们都是一样的。
    • 您应该用分号结束每个语句

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多