首页 > 解决方案 > Pgsql如何从脚本返回一个值

问题描述

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

该脚本由 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;

谢谢

标签: postgresqlplpgsql

解决方案


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

[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

DOcommand 不支持任何形式的返回值。


推荐阅读