无法在 Snowflake 存储过程中创建临时阶段对象

Cannot create a temporary stage object in a Snowflake stored procedure

下面的存储过程执行returns报错信息'存储过程执行错误:不支持的语句类型'temporary STAGE'。'把存储过程定义中的关键字'temporary'去掉就解决了,可以正常执行

怎么可能?根据其文档,Snowflake 支持创建临时舞台。 最重要的是,相同的 SQL 语句一旦在存储过程之外执行就可以正常工作。

CREATE OR REPLACE PROCEDURE "TEST_TEMP_STAGE"()
RETURNS FLOAT
LANGUAGE JAVASCRIPT
STRICT
EXECUTE AS OWNER
AS $$
    var req='create  temporary stage my_temp_stage;'
    snowflake.createStatement( { sqlText: req } ).execute();
    return 0;
$$

您应该将您的过程定义为“EXECUTE AS CALLER”,以便能够在您的存储过程中创建一个临时阶段。

CREATE OR REPLACE PROCEDURE "TEST_TEMP_STAGE"()
RETURNS FLOAT
LANGUAGE JAVASCRIPT
STRICT
EXECUTE AS CALLER
AS $$
    var req='create temporary stage my_temp_stage;'
    snowflake.createStatement( { sqlText: req } ).execute();
    return 0;
$$
;

call TEST_TEMP_STAGE();