【问题标题】:EXISTS and output parameter in stored procedure in mysqlmysql中存储过程中的EXISTS和输出参数
【发布时间】:2013-08-14 06:00:36
【问题描述】:

这是我的存储过程,如果在文档详细信息中找到任何数据但它会生成错误,则返回 true

" #1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 5 行的 '@result = true end if end' 附近使用"

create procedure abcde(out result boolean)
    begin

        if exists(select * from document_details)
        then @result = true;
        end if
    end

请尽快给我解决方案

【问题讨论】:

  • @result 是用户定义的变量,而不是输出参数。我建议你阅读参考手册中的Variables in Stored Programs。
  • 那么请建议我如何检索值作为输出参数的代码

标签: mysql stored-procedures exists


【解决方案1】:

除了需要使用SET给局部变量或参数赋值之外,还有其他值得一提的地方

  1. END IF 后面必须有分号
  2. 由于EXSITS() 返回BOOLEAN,您可以直接将其分配给您的OUT 参数

也就是说你的存储过程可能看起来像

CREATE PROCEDURE abcde(OUT result BOOLEAN)
  SET result = 
  (
    EXISTS(SELECT * 
             FROM document_details)
  );

注意:现在它只是一个声明。因此,您甚至不需要更改 DELIMITER 并使用 BEGIN ... END 块。

这里是SQLFiddle演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2016-10-30
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多