pgsql如何从脚本返回值

时间:2018-11-13 11:32:16

标签: postgresql plpgsql

我需要从执行pgsql脚本的过程中返回一个名为tsmax的值。

该脚本由ETL数据源(Pentaho)执行。我所能做的就是执行一个脚本。我无法在源数据库上创建函数。

下面是我的脚本。最后,我需要类似select tsmax;的东西,但是脚本块无法选择或返回值。 (为简化示例,我刚刚将所有计算替换为标签“ 执行一些过程以计算tsmax ”。)

do $$
declare tsmax timestamp;
begin
    -- do some process to calculate tsmax
    -- do some process to calculate tsmax
    tsmax = now();

    -- i want to return value tsmax
    select tsmax; -- this is an ERROR!
end $$ language plpgsql;

谢谢

1 个答案:

答案 0 :(得分:1)

您应该将值存储到会话变量中,并且在执行匿名块之后,您可以读取以下值:

[pavel@nemesis ~]$ echo "do \$\$ begin perform set_config('myvars.myvar', current_date::text, false); end \$\$; select current_setting('myvars.myvar'); " | psql -At postgres
DO
2018-11-13

DO命令不支持任何形式的返回值。