0

您有 2 个 MySQL 存储过程,它们都在最后选择返回码。您需要在另一个中调用 1 个存储过程,并获取其返回码。这可能吗?

过程1:

CREATE PROCEDURE (IN...)
BEGIN
DECLARE ret_code
...UPDATE SOMETHING....
SELECT ret_code as return_code from dual;
END

过程2:

CREATE PROCEDURE (IN...)
BEGIN
DECLARE returnVal
if(conditional true)
    ..Update something else..
    Set returnVal = x;
else
    call proc1(var1,...)
    Set returnVal = (ret_code obtained from proc1)
end if
select returnVal;
END

在 proc2 中调用 proc1 时,如何获取在 proc2 中 proc1 末尾选择的 ret_code?

4

1 回答 1

0

您应该使用CREATE FUNCTION而不是CREATE PROCEDURE

CREATE FUNCTION (...) RETURNS ...datatype...
BEGIN
DECLARE ret_code
...UPDATE SOMETHING....
RETURN ret_code;
END

CREATE FUNCTION (...) RETURNS ...datatype...
BEGIN
DECLARE returnVal
if(conditional true)
    ..Update something else..
    Set returnVal = x;
else
    Set returnVal = proc1(var1,...)
end if
RETURN returnVal;
END

或者OUT为过程指定一个参数,并使用它:

CREATE PROCEDURE (OUT ret_code ...datatype..., IN...)
BEGIN
...UPDATE SOMETHING....
Set ret_code = return_code;
END

CREATE PROCEDURE (OUT returnVal ...datatype..., IN...)
BEGIN
if(conditional true)
    ..Update something else..
    SET returnVal = x;
else
    call proc1(returnVal, var1,...)
end if
END
于 2012-09-12T17:06:54.220 回答