【问题标题】: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 的这段代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        • 2014-07-22
        • 1970-01-01
        相关资源
        最近更新 更多