postgresql - 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;
谢谢
解决方案
您应该将值存储到会话变量中,并且在执行匿名块后,您可以读取此值:
[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
command 不支持任何形式的返回值。
推荐阅读
- c# - Rhino.Mocks - 从存根获取模拟实例
- java - Java RPN 计算器 NullPointerException 错误
- javascript - 使用节点 pg 从 csv 文件将多行插入 db
- python - 字符串传递给 rpy2 的奇怪行为 - 从字符串中删除前导零
- python - 如何对数据框中的前几行求和?
- typescript - 如何在 Vue 3 Typescript 中定义可选数据
- maven - Maven 依赖插件,copyDependencies:不能指定'distributionManagement.status'
- javascript - 如何从Vue中的函数动态添加脚本
- python - 从列表中打印不同的元素,但文本相同且数量增加?
- c# - docfx 按实现过滤