无法在 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();
下面的存储过程执行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();