stored-procedures - 无法在 Snowflake 存储过程中创建临时阶段对象
问题描述
以下存储过程执行返回错误消息“存储过程执行错误:不支持的语句类型“临时 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();
推荐阅读
- python - 没有列表的重复元素
- javascript - 未提及 Discord.js 用户
- django - 带有 Firebase 的 django DRF 需要访问 request._request
- scikit-learn - sklearn.metrics 中的“check_scoring”是什么?
- c# - 任何帮助!错误系统 IO 文件未找到异常
- python - 为什么我在导入 utils 时会收到导入错误?
- javascript - 你如何在 React 中使用 onChange?
- visual-studio-code - 如何在 VSCode 中为工作区设置不同的默认终端
- apache-camel - 将指标从 Camel 推送到外部服务
- vue.js - vuetify 插件 2021 上的未知自定义元素 Vue Jest 测试 - Vue Cli 2