mysql中存储过程中的EXISTS和输出参数

Posted

技术标签:

【中文标题】mysql中存储过程中的EXISTS和输出参数【英文标题】:EXISTS and output parameter in stored procedure in mysql 【发布时间】: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。 那么请建议我如何检索值作为输出参数的代码 【参考方案1】:

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

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

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

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

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

这里是SQLFiddle演示

【讨论】:

以上是关于mysql中存储过程中的EXISTS和输出参数的主要内容,如果未能解决你的问题,请参考以下文章

mysql 中的存储过程

从java中的mysql存储过程中获取参数

在MySQL中如何创建一个带输出参数为一个表类型的存储过程

mysql中的存储过程怎么使用

Mysql中的函数

使用 PHP 返回 mysql 存储过程的输出参数