Ant*_*jes 5 postgresql stored-procedures temp-tables postgresql-13
我正在尝试在过程中创建并填充临时表,以保存我正在使用的数据的一些中间状态。
我创建了一个示例代码来解释我想要做什么:
CREATE OR REPLACE PROCEDURE etl.my_test_procedure()
LANGUAGE sql
AS
$$
CREATE TEMP TABLE IF NOT EXISTS my_temp(
var1 VARCHAR(255),
var2 VARCHAR(255)
) ON COMMIT DROP;
INSERT INTO my_temp (
var1,
var2
)
SELECT
table_schema,
column_name
FROM information_schema.columns;
SELECT
*
FROM my_temp
$$
Run Code Online (Sandbox Code Playgroud)
尝试创建此存储过程时,数据库返回以下错误消息: 错误:关系“my_temp”不存在第 10 行:INSERT INTO my_temp (^ SQL 状态:42P01 字符:171
PD:我的 Postgres 版本是 13.3
你必须使用plpgsql而不是sql
CREATE OR REPLACE FUNCTION my_test_procedure()
RETURNS TABLE(var1 VARCHAR(255), var2 VARCHAR(255))
AS
$$
DECLARE
BEGIN
CREATE TEMP TABLE IF NOT EXISTS my_temp(
var1 VARCHAR(255),
var2 VARCHAR(255)
) ON COMMIT DROP;
INSERT INTO my_temp (
var1,
var2
)
SELECT
table_schema,
column_name
FROM information_schema.columns;
RETURN QUERY SELECT *
FROM my_temp;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3970 次 |
| 最近记录: |