如何解决AWS Redshift Cursor 失败:DECLARE CURSOR may only be used in transaction blocks;
首先,我知道游标的性能不佳,但在我的特定情况下我需要一个。
在 AWS Redshift 中,我有以下代码:
BEGIN;
DECLARE newCursor CURSOR FOR SELECT * FROM DBFoo.TableBar;
FETCH NEXT FROM newCursor;
CLOSE newCursor;
我收到以下错误:
亚马逊无效操作:DECLARE CURSOR 只能在交易区块中使用;
自从“开始;”直接在“DECLARE newCursor CURSOR”之前我不明白它为什么失败,或者如何让它工作
编辑:我通过 Datagrip 连接到 Redshift。这是一个全新的会议。如果我在BEGIN之前声明游标也失败,因为它需要一个事务块
解决方法
您的会话可能处于“自动提交”模式。这基本上意味着每个 ';'是一个隐含的 COMMIT。您可以通过查看会话的 svl_statementtext 并查看您的语句的 xid 是否在发出 BEGIN 后继续更改来确认这一点。如果这是原因,您需要参考 Datagrip 文档来确定如何关闭自动提交。
,DataGrip documentation about transaction mode 和 execution behavior。
此外,您可以从每个控制台/会话的控制台工具栏中更改它
并为每个数据源设置
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。