我编写了一个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)。
答案 0 :(得分:3)
如果您的意思是想要将循环查询作为字符变量传递,那么您可以这样做:
DECLARE
_query : text;
r : record;
BEGIN
_query := 'SELECT * FROM posts';
FOR r IN EXECUTE _query LOOP
-- do stuff
END LOOP;
RETURN new;
END;
答案 1 :(得分:3)
DECLARE
CURSOR cursor is (select * from posts);
r record;
BEGIN
FOR cursor_rec in cursor LOOP
...
END LOOP;
答案 2 :(得分:-1)
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