【发布时间】:2017-02-28 16:28:27
【问题描述】:
以下代码是 PostgreSQL 9.0 中的游标。我想通过加入多个表来获取我的记录,并且我正在从该连接中获取 JSON 数据。
所以我想循环这些记录并使用类似于
的查询来解析该 jsonSELECT "Dump"->'activities-steps'->0->'value' as "steps"
FROM "ActivitySessionDump" where "Id"=42594321345021288
然后我必须从此查询中获取数据并插入到其他表中,例如
insert to table name (key,value);
所以我准备了一个只读光标来完成这个任务
begin work;
DECLARE
sessionids INSENSITIVE no scroll CURSOR FOR
SELECT asn."Id",asn."UserId",asn."ActivityId",ad."Dump"
FROM "ActivitySession" as asn inner join "ActivitySessionDump" as ad
on asn."Id"=ad."ActivitySessionId"
where asn."CreatedAt" between now() - interval '5 hours' and now() and asn."ActivityId"=1
for read only;
---- i want her loop should start and i will parse a json Dump by executing query--------
--------insert record to another table---------------
---end loop-----------
FETCH next FROM sessionids;
CLOSE sessionids;
COMMIT WORK;
非常感谢任何帮助。谢谢
【问题讨论】:
-
您的问题到底是什么?请发布您的函数的完整源代码。
-
在我的代码中我给出了一些注释,即我想在游标声明后启动一个循环并执行一个 sql 并插入到某个表中
-
我没有创建任何函数,我只想创建一个光标
-
你不能像在函数外那样运行 PL/pgSQL 块。如果你不想要一个函数,你需要使用
do块:postgresql.org/docs/9.0/static/sql-do.html 但是你为什么不能简单地使用insert into table (key, value) select ... -
此外,不再维护或支持 Postgres 9.0。您确实需要尽快计划升级。
标签: json postgresql cursor plpgsql