SQL 从 DB2 存储过程中检索返回值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/373386/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 00:33:01  来源:igfitidea点击:

Retrieve return value from DB2 stored procedure

sqlstored-proceduresdb2return-value

提问by molasses

I have a block of code that is repeated within a DB2 stored procedure. I would like to separate this out into a new procedure that I can call with parameters and have it return a value.

我有一个在 DB2 存储过程中重复的代码块。我想把它分离成一个新的过程,我可以用参数调用它并让它返回一个值。

How do I create a procedure to return a value and how do I call this procedure from inside my original procedure?

如何创建返回值的过程以及如何从原始过程中调用此过程?

采纳答案by Frans Bouma

How about an output parameter in the proc you call from within your original proc? Calling a proc is done through the CALL command. It's in the manual ;)

您从原始 proc 中调用的 proc 中的输出参数如何?调用 proc 是通过 CALL 命令完成的。它在手册中;)

回答by molasses

Yes, an output parameter is all it took. I couldn't find the right calling syntax in the manual or google though.

是的,只需要一个输出参数。我在手册或谷歌中找不到正确的调用语法。

You create the procedure like this:

你创建这样的过程:

CREATE PROCEDURE myschema.add(IN a INT, IN b INT, OUT c INT)
BEGIN
    SET c = a + b;
END

And then call it like this (this is what I couldn't figure out):

然后这样称呼它(这是我想不通的):

DECLARE result INT DEFAULT 0;

CALL myschema.add(10, 20, result);

-- result == 30

And then the output ends up in the supplied resultvariable. You can also have multiple OUTparams as well as INOUTparams.

然后输出以提供的result变量结束。您还可以有多个OUT参数以及INOUT参数。

Sure it seems obvious now. :)

当然现在看起来很明显。:)