从函数中操作 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 参数的主要内容,如果未能解决你的问题,请参考以下文章