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