首页 > 解决方案 > 如何正确调用带有 out 参数的 MySQL 存储过程?

问题描述

我有一个 MySQL SP 如下

DELIMITER //

CREATE PROCEDURE prc_testProc(
    IN p_input varchar(32),    
    out v_output BIGINT)
BEGIN 

    SET v_output = 1000; -- default sequence value

    IF (p_input = 'test1') THEN

        SET v_output = (Select MAX(a.id) FROM tbl1 a WHERE a.colunmname='somename');

    ELSEIF (p_input = 'test2') THEN

        SET v_output = (Select MAX(a.id) FROM tbl2 a WHERE a.colunmname='somename');    

    ELSE 
        SET v_output = 1000;

    END IF;
END;
//

DELIMITER ;

它编译得很好。但是当我这样称呼它时

call prc_testProc('ww',@v_output);

我只得到“0行受影响”

我究竟做错了什么?在这种情况下,我期待默认值,即 1000。

标签: mysqlmysql-workbench

解决方案


该变量将设置为过程中分配的值。然后,您可以在另一个查询中使用该变量。

CALL pr_testProc('ww', @testproc_result);
SELECT @testproc_result;

推荐阅读