SELECT .. INTO для создания таблицы в PL / pgSQL

Я хочу использоватьSELECT INTO сделать временную таблицу в одной из моих функций.SELECT INTO работает в SQL, но не в PL / pgSQL.

Этот оператор создает таблицу с именем mytable (еслиorig_table существует как отношение):

SELECT *
INTO TEMP TABLE mytable
FROM orig_table;

Но поместите эту функцию в PostgreSQL, и вы получите ошибку:ERROR: "temp" is not a known variable

CREATE OR REPLACE FUNCTION whatever()
RETURNS void AS $$
BEGIN
    SELECT *
    INTO TEMP TABLE mytable
    FROM orig_table;
END; $$ LANGUAGE plpgsql;

Я могуSELECT INTO переменная типаrecord в PL / pgSQL, но затем я должен определить структуру при получении данных из этой записи.SELECT INTO это действительно просто - автоматически создать таблицу с той же структуройSELECT запрос. Есть ли у кого-нибудь объяснение, почему это не работает внутри функции?

Это похоже наSELECT INTO в PL / pgSQL работает иначе, потому что вы можете выбрать переменные, которые вы объявили. Однако я не хочу объявлять структуру моей временной таблицы. Я хотел бы просто создать структуру автоматически, как это делает в SQL.