mysql - 如何正确调用不带out参数的MySQL存储过程?

标签 mysql mysql-workbench

我有一个 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。

最佳答案

传递一个变量作为第二个参数。如果您从 MySQL Workbench 调用它,请使用用户定义的变量(@var),如果您从其他过程调用它,它可以是普通变量(DECLARE)。

call prc_testProc('ww',@v_output);

select @v_output;

关于mysql - 如何正确调用不带out参数的MySQL存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922465/

相关文章:

mysql - 增加 rails 中具有固定值的所有记录

php图片上传

mysql - 处理日期/时间时的复合主键或代理

MySQL 每月限制 5 个

mysql-workbench - 如何查看MySQL Workbench 6.1中的错误?

MySQL 的 LIKE 运算符找不到完全匹配的电话号码

mysql - 如何在一个 MysQl 查询中查找 MIN、MAX、FIRST、LAST?

mysql - mysql工作台中的外键

Java应用程序: accessing database on a different computer

mysql - 创建函数时出现语法错误