【问题标题】:Error on calling Snowflake stored procedure from tDBrow in Talend从 Talend 中的 tDBrow 调用 Snowflake 存储过程时出错
【发布时间】:2021-09-23 17:33:23
【问题描述】:

从 Talend 中的 tDBrow 执行 Snowflake 存储过程时,我收到以下错误消息。 ​​​ 从 Snowflake Web UI 执行时,相同的存储过程可以正常执行。您能否告知为什么我在从 Talend 而不是从 Web UI 执行时出现范围事务错误。

错误:
存储过程执行错误:在存储过程中启动的作用域事务不完整,已回滚。

【问题讨论】:

  • 您是否在 Talend 和 WebUI 中使用相同的 Snowflake 角色运行 SP?
  • 你应该确保你没有在你的命令之前开始一个事务(或者关闭一个现有的)。您能否发布您尝试播放的存储过程。
  • @NickW,是的,我使用相同的角色。
  • 问题解决了。从 Talend 调用过程时,事务在过程执行之前开始,在执行之后结束。我应该在过程中明确定义事务的范围。因此,我分别在过程的开头和结尾(返回之前)添加了这两行:snowflake.createStatement({sqlText: "BEGIN TRANSACTION"}).execute(); snowflake.createStatement({sqlText: "COMMIT"}).execute();

标签: stored-procedures snowflake-cloud-data-platform talend


【解决方案1】:

问题解决了。从 Talend 调用过程时,事务在过程执行之前开始,在执行之后结束。

我应该在过程中明确定义事务的范围。因此,我分别在程序的开头和结尾(返回之前)添加了这两行:

snowflake.createStatement({sqlText: "BEGIN TRANSACTION"}).execute(); 
snowflake.createStatement({sqlText: "COMMIT"}).execute();

【讨论】:

  • 请您出示您的代码(程序的)好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多