Сохранить запрос SQL в переменную - PullRequest
4 голосов
/ 19 апреля 2011

Я написал триггер 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 ]

3 голосов
/ 19 апреля 2011
DECLARE

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

FOR cursor_rec in cursor LOOP
  ... 
END LOOP;
3 голосов
/ 19 апреля 2011

Если вы хотите передать запрос цикла как символьную переменную, то вы можете сделать это следующим образом:

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

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

    RETURN new;
END;
0 голосов
/ 19 апреля 2011
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;

этот код для оракула PL-SQL

...