【问题标题】:Save SQL query to variable将 SQL 查询保存到变量
【发布时间】:2011-04-19 12:08:48
【问题描述】:
我已经编写了一个 PL/PgSQL 触发器,我需要将查询(实际上是结果集)保存到变量中。
见下文:
DECLARE
__query record;
r record;
BEGIN
__query := (SELECT * FROM posts);
FOR r IN __query LOOP
-- do something with the row data
END LOOP;
RETURN NEW;
END;
我应该为查询本身使用哪种数据类型?
我猜record 不是合适的数据类型,应该在循环周期本身中使用(对于 r var)。
【问题讨论】:
标签:
sql
postgresql
triggers
plpgsql
【解决方案1】:
如果您的意思是要将循环的查询作为字符变量传递,那么您可以这样做:
DECLARE
_query : text;
r : record;
BEGIN
_query := 'SELECT * FROM posts';
FOR r IN EXECUTE _query LOOP
-- do stuff
END LOOP;
RETURN new;
END;
【解决方案2】:
DECLARE
CURSOR cursor is (select * from posts);
r record;
BEGIN
FOR cursor_rec in cursor LOOP
...
END LOOP;
【解决方案3】:
DECLARE
cursor c is select * from posts;
-- r record; you don't need to declare this variable
BEGIN
FOR c_rec in c LOOP
...
...
...
END LOOP;
END;
oracle pl-sql 的这段代码