sql - 将 SQL 查询保存到变量

标签 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)。

最佳答案

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

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

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

    RETURN new;
END;

关于sql - 将 SQL 查询保存到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716096/

相关文章:

sql - 是否可以在同一个查询中执行不同的选择?

mysql - 更新后触发使缓存失效

java - 如何获取联系人号码的组ID(Android)

mysql - 内连接或其他相等的解决方案

sql - 基于邻接表递归查询分层数据

sql - 查找分区内最大的连续数字组

mysql - 在 UPDATE 之前使用触发器将一行插入到我的第二个表中

javascript - 时间戳日期和时间格式 - Apps 脚本 - 格式化日期和时间

sql - 比较两个数据库

sql - 数据库可扩展性 : Which is more important, 表的大小或查询的数量?