для строки в таблице сохраните строку во временной таблице, чтобы использовать ее данные в запросе выбора в plpgsql - PullRequest
0 голосов
/ 03 октября 2018

Я хочу сделать что-то подобное, но не уверен, что переменная строки записи типа данных используется для итерации цикла for для таблицы может быть вставлена ​​в временная таблица в той же самой для цикла,

CREATE OR REPLACE FUNCTION LoopThroughTable() 
RETURNS VOID 
AS
$$
DECLARE 
t_row record;
BEGIN
   FOR t_row in SELECT * FROM the_table
      LOOP
      create temp table tmp as (select * from t_row); --- is this possible??
      --- use the data of tmp table in some select query
      drop table tmp; -- is this possible??
      END LOOP;
END;
$$ 
LANGUAGE plpgsql;

Если это возможно, может кто-нибудь помочь мне с правильным синтаксисом?

1 Ответ

0 голосов
/ 04 октября 2018

Разобрался!

На всякий случай, если кто-то наткнется на этот пост, эффективный способ доступа к t_row record виду данных будет:

CREATE OR REPLACE FUNCTION LoopThroughTable() 
RETURNS VOID 
AS
$$
DECLARE 
   t_row record;
BEGIN
   FOR t_row in SELECT * FROM table_1
       LOOP
          SELECT * FROM table_2 when A= t_row.B 
          -- where A is a column in table_2 whose value should be equal to column B in t_row (which single row from table_1) 
       END LOOP;
END;
$$ 
LANGUAGE plpgsql;
...