将SQL查询保存到变量

时间:2011-04-19 12:08:49

标签: sql postgresql triggers plpgsql

我编写了一个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)。

3 个答案:

答案 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