【发布时间】:2020-01-30 04:41:24
【问题描述】:
我在 Redshift 中有一个表(我们称之为状态表),我在其中设置了要截断的表的状态。为了实现这一目标,我创建了一个 Redshift Stored Procedure。这是我的 SP 代码:
CREATE OR REPLACE PROCEDURE <schema>.truncate_table()
AS $$
DECLARE
v_tpsl RECORD;
exec_statement VARCHAR(256);
BEGIN
FOR v_tpsl in SELECT * from <schama>.tablename_process_status_log WHERE status = 'TRUE' LOOP
exec_statement = 'TRUNCATE TABLE <schema>.' + quote_ident(v_tpsl.staging_table_name) + '_test;';
RAISE INFO 'statement = %', exec_statement;
EXECUTE exec_statement;
END LOOP;
END;
$$
LANGUAGE plpgsql;
现在当我调用存储过程时,我收到了这个错误:
SQL Error [500310] [34000]: [Amazon](500310) Invalid operation: cursor does not exist;
我查看了 SP 的文档以检查 Truncate 是否可行。通过查看examples,看起来这是可能的。
我不确定这出了什么问题。我正在使用 RedshiftJDBC42-no-awssdk-1.2.34.1058.jar 并通过 DBeaver 连接。
【问题讨论】:
-
尝试使用常规 PostgreSQL 而不是错误的 fork。
-
@LaurenzAlbe - 这是一个很好的建议,但由于我们想使用它,所以不能这样做。
标签: amazon-redshift