0

2つのMySQLストアドプロシージャがあり、どちらも最後にリターンコードを選択します。別のストアドプロシージャ内で1つのストアドプロシージャを呼び出し、そのリターンコードを取得する必要があります。これは可能ですか?

Proc1:

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

Proc2:

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 に答える