我需要从执行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;
谢谢
答案 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
命令不支持任何形式的返回值。