我尝试在存储过程中更改OUT
变量。在调用过程之前,我将my_variable
设置为9.我没有错误,但在CALL
语句变量为NULL
后
CREATE PROCEDURE getAllMen(OUT my_variable int)
BEGIN
CASE my_variable
WHEN my_variable <= 10 THEN SELECT 44 INTO my_variable;
WHEN my_variable > 10 THEN SELECT 55 INTO my_variable;
ELSE BEGIN END;
END CASE;
END
SET @start_id = 9;
SELECT @start_id;
CALL getAllMen(@start_id);
感谢。
答案 0 :(得分:1)
尝试:
DROP PROCEDURE IF EXISTS `getAllMen`;
CREATE PROCEDURE `getAllMen`(
/*OUT `my_variable` INT*/
INOUT `my_variable` INT
)
BEGIN
CASE/* `my_variable` */
WHEN `my_variable` <= 10 THEN
SELECT 44 INTO `my_variable`;
WHEN `my_variable` > 10 THEN
SELECT 55 INTO `my_variable`;
END CASE;
END;
SET @`start_id` := 9;
SELECT @`start_id`;
CALL `getAllMen`(@`start_id`);
SELECT @`start_id`;
请参阅db-fiddle。
<强>更新强>
参见文档:
13.1.16 CREATE PROCEDURE and CREATE FUNCTION Syntax
...
OUT
参数将过程中的值传递回 呼叫者。它在程序中的初始值为NULL
当过程返回时,调用者可以看到值。...