我在通过 dbt 在 Snowflake 中执行存储过程时遇到问题:
我的过程的描述是这样的: MyStoredProcedure(ARRAY, VARCHAR, VARCHAR)
所以,当我想运行它时,我使用array_construct函数来创建第一个参数,例如:
call MyStoredProcedure(array_construct(array_construct('str_1', 'str_2')), 'schema_name', 'table_name');
这在我在雪花中运行时有效。但是,当我从 dbt 运行它时,它会因以下错误而失败:
不允许修改在不同范围开始的事务。
我确信这与在此调用中调用 array_construct 有关。
我应该提到,要从 dbt 运行它,我已经定义了一个这样的宏:
{% macro MyStoredProcedure() %}
{% set query -%}
CALL MyStoredProcedure(
array_construct(array_construct('str_1', 'str_2')),
'schema_name',
'table_name');
{%- endset %}
{% do run_query(query) %}
{% endmacro %}
当然像这样运行它:dbt run-operation MyStoredProcedure
我感谢任何提示或想法来帮助我解决这个问题。
谢谢