提交后如何在Redshift过程中获取结果集



我正在Redshift中创建过程。我想在END语句之前添加一个select语句来验证结果,但它不起作用。

这很好:

CREATE OR REPLACE PROCEDURE my_procedure()
LANGUAGE plpgsql
AS $$                
BEGIN (a whole bunch of select into statements)
commit;
END;
$$;

但是,当我在提交后使用"从表中选择计数(*(cnt"时,我会得到一个错误,比如

"COMMIT不能从在原子上下文中执行的过程中调用">

我知道我可以创建my_procedure(当前refcursor(,它在没有提交的情况下工作,但我无法使它与提交一起工作:

open current for select count(*) cnt from table_name;

SQL Server似乎在执行插入时返回了select语句。如何在Redshift?

可能是从打开的事务中调用存储过程。请参阅"管理事务"文档中的TRUNCATE示例。

您可以在GitHub上的Redshift Utils repo中看到使用COMMIT的一些Redshift存储过程示例。特别地,sp_sync_get_new_rows有条件地使用COMMITROLLBACK

相关内容

  • 没有找到相关文章

最新更新