将 SQL 查询保存到变量

Rad*_*mko 5 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;
Run Code Online (Sandbox Code Playgroud)

我应该使用哪种数据类型进行查询?

我想record这不是合适的数据类型,应该在循环周期本身中使用(对于 r var)。

小智 3

如果您的意思是要将循环查询作为字符变量传递,那么您可以这样做:

DECLARE 
    _query : text;
    r : record;
BEGIN
    _query := 'SELECT * FROM posts';

    FOR r IN EXECUTE _query LOOP
       -- do stuff
    END LOOP;

    RETURN new;
END;
Run Code Online (Sandbox Code Playgroud)