2011-04-19 69 views
4

我寫了一個PL/PgSQL觸發器,我需要將查詢(實際上是結果集)保存到變量中。 見下文:將SQL查詢保存到變量

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

我相信你應該在這裏使用遊標 – 2011-04-19 12:11:39

回答

3

如果你的意思是你想通過查詢循環作爲一個字符變量,那麼你可以做這樣的:

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

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

    RETURN new; 
END; 
3
DECLARE 

    CURSOR cursor is (select * from posts); 
    r  record; 
BEGIN 

FOR cursor_rec in cursor LOOP 
    ... 
END LOOP; 
-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

+0

-1:Oracle PL/SQL不適用於PostgreSQL – 2011-04-19 12:55:33