如何通过函数声明变量?

时间:2020-04-24 07:20:24

标签: postgresql function variables variable-declaration create-function

我当前正在制作一个函数,由于我的 main_function 中另一个函数的结果,我需要声明一个变量。

CREATE OR REPLACE FUNCTION main_function(t_name varchar) 
RETURNS void AS 
$BODY$
DECLARE
    var_1 varchar := execute format('select var_1 from sub_function(%s)' ,t_name);
BEGIN
    --do something with var_1
END;
$BODY$
LANGUAGE plpgsql;

我的 sub_function 返回一行,其中包含三个列。

select var_1 from sub_function()

仅返回一个结果。我想将结果存储在变量 var_1 中,因为以后需要它。 同样重要的是,此 sub_function t_name 变量一起使用,该变量是从 main_function 的参数中获得的。 我试图以许多不同的方式来做到这一点,例如没有执行功能。

var_1 varchar := format('select var_1 from sub_function(%s)' ,t_name);

不幸的是,此语句返回整个文本“从sub_function('soimething')中选择var_1”,而不是查询的结果。 我该怎么办? 感谢您的任何事先帮助!

1 个答案:

答案 0 :(得分:2)

return_column_name 是您的函数应返回的列。我不知道名字,因为您说过您的函数返回3列。仅供参考,您可以使用select ...将所有三个值转换为va1,var2,var3

CREATE OR REPLACE FUNCTION main_function(t_name varchar) 
RETURNS void AS 
$BODY$
DECLARE
    var_1 varchar;
BEGIN
    select <return_column_name> from sub_function(t_name)  into var_1;
END;
$BODY$
LANGUAGE plpgsql;

链接到doc