我想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;
我可以在 PL/pgSQLSELECT INTO
中使用类型变量record
,但是当从该记录中获取数据时,我必须定义结构。SELECT INTO
真的很简单——自动创建一个与SELECT
查询结构相同的表。有没有人解释为什么这在函数中不起作用?
在 PL/pgSQL 中似乎SELECT INTO
工作方式不同,因为您可以选择已声明的变量。不过,我不想声明我的临时表结构。我希望它会像在 SQL 中那样自动创建结构。