从函数中操作 OUT 参数

Posted

技术标签:

【中文标题】从函数中操作 OUT 参数【英文标题】:Manipulating OUT parameters from function 【发布时间】:2015-07-09 12:23:40 【问题描述】:

我有一个有两个 OUT 参数的函数。我想从另一个函数调用该函数并将这些 OUT 参数放入两个变量。虽然我在这里看到了一些类似的问题,但是将这两个参数保存到两个变量时遇到了一些麻烦。

代码如下:

CREATE OR REPLACE FUNCTION some_function_2(OUT out_code2 integer, OUT out_message2 text)
  RETURNS RECORD AS
$BODY$
DECLARE
   --s_code integer;
   --s_message text;
BEGIN
    --Calling first function, return two out parameters and end function
    SELECT some_function_1() INTO out_code2, out_message2;

END
$BODY$
  LANGUAGE plpgsql VOLATILE

CREATE OR REPLACE FUNCTION some_function_1(OUT out_code1 integer, OUT out_message1 text)
  RETURNS RECORD AS
$BODY$
DECLARE
   --s_code integer;
   --s_message text;
BEGIN

   out_code1:= 1;
   out_message1:= 'TEST';

END
$BODY$
  LANGUAGE plpgsql VOLATILE

【问题讨论】:

【参考方案1】:

some_function_2() 中,您应该使用返回两个值而不是记录的查询:

CREATE OR REPLACE FUNCTION some_function_2(OUT out_code2 integer, OUT out_message2 text)
  RETURNS RECORD AS
$BODY$
DECLARE
BEGIN
    --Calling first function, return two out parameters and end function
    SELECT out_code1, out_message1 FROM some_function_1() INTO out_code2, out_message2;
END
$BODY$
  LANGUAGE plpgsql VOLATILE;

【讨论】:

这只是一个例子。我有一个更大的函数,它必须返回几个 OUT 参数,并且将被另一个函数调用。我想将这些 OUT 参数插入到其他函数中的某个变量中。这就是我没有使用查询的原因。 我调用 some_function_2 时得到的错误是:“错误:整数的无效输入语法:“(1,TEST)”“ 再看一遍答案,复制粘贴我的函数,然后测试一下。 对不起,一开始我误会了。你是对的,这是有效的,不知道你可以从这样的函数中访问 OUT 参数。非常感谢。 没关系。它应该是访问多个输出参数的首选方式。

以上是关于从函数中操作 OUT 参数的主要内容,如果未能解决你的问题,请参考以下文章

C#中ref与out使用小结

Numpy 系列- 常用函数

从函数返回多个值的最佳方法是啥?

从函数返回多个值的最佳方法是啥?

Oracle————存储过程与函数

Oracle————存储过程与函数