【问题标题】:How to declare a variable as a result of a function?如何声明一个变量作为函数的结果?
【发布时间】:2023-03-31 05:10:01
【问题描述】:

我目前正在制作一个函数,我需要声明一个变量作为我的 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_functiont_name 变量一起操作也很重要,我从 main_function 的参数中得到该变量。 我尝试过很多不同的方法,例如没有执行功能。

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

不幸的是,这个返回整个文本“select var_1 from sub_function('soimething')”而不是查询的结果。 我该怎么办? 提前感谢您的帮助!

【问题讨论】:

  • 这里完全不需要动态 SQL。

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


【解决方案1】:

return_column_name 是您的函数应返回的列。我不知道名字,因为你说你的函数返回 3 列。仅供参考,您可以使用 select ... into 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多