首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用Snowflake-SQL重置Snowflake会话中的所有SQL变量?

有没有办法使用Snowflake-SQL重置Snowflake会话中的所有SQL变量?
EN

Stack Overflow用户
提问于 2020-05-27 01:19:22
回答 2查看 197关注 0票数 3

在创建Snowflake SQL脚本时,我是会话变量的铁杆粉丝,但我缺少重置所有变量的功能。有没有办法用一个命令重置所有会话变量?(类似于UNSET ALL SESSION VARIABLES)

潜在的问题是,我发现自己在创建Snowflake脚本时犯了许多变量声明错误。假设我正在开发两个脚本。在这两个脚本中,我都使用了一个公共变量"var",但我忘记在其中一个脚本中声明它。我目前无法在我自己的会话中轻松检测到这个错误。

根据文档documentation,雪花允许我显示所有变量,并允许我取消设置多个变量(如果我知道它们的标识符)。这两者的结合就是我想要的。

任何建议都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-09-11 13:07:12

为此,您可以使用存储过程。

我为你写了一个:

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE unset_all()
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
var stmt = snowflake.createStatement({
    sqlText: "SHOW VARIABLES",    
});
stmt.execute();
var env_vars=[];
var result1 = stmt.execute();
while(result1.next()) {
  env_vars.push(result1.getColumnValue('name'));
}
if (env_vars.length > 0) {
  snowflake.createStatement({
      sqlText: "UNSET (" + env_vars + ");",    
  }).execute();
}
$$;

测试:

代码语言:javascript
复制
SET a = 'a';
SET b = 'b';
SHOW VARIABLES;
CALL unset_all();
SHOW VARIABLES;

请注意,需要EXECUTE AS CALLER才能使其正常工作。

票数 3
EN

Stack Overflow用户

发布于 2021-05-04 04:31:44

一种有点“丑陋”的方法是取消当前会话:

代码语言:javascript
复制
SET v = 1;
SET i = 'a';

SHOW VARIABLES;
-- v ...
-- i ...

SELECT SYSTEM$ABORT_SESSION(CURRENT_SESSION()::INT);

SHOW VARIABLES;
-- empty

备注:

使用经典UI时,您将立即注销,它将与依赖于会话的PreviewApp

  • objects一起使用将丢失(未提交的事务/临时表/会话参数等)-与caution!!!

一起使用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62027850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档