Stored procedures 在存储过程中创建雪花仓库会更改当前仓库

Stored procedures 在存储过程中创建雪花仓库会更改当前仓库,stored-procedures,snowflake-cloud-data-platform,Stored Procedures,Snowflake Cloud Data Platform,我正在尝试编写一个创建用户、角色和仓库的过程。此过程由具有ACCOUNTADMIN角色的高权限用户执行 USE ACCOUNT_ADMIN; USE WAREHOUSE PROVISIONER; CREATE or replace PROCEDURE TEST() RETURNS VARCHAR LANGUAGE javascript AS $$ snowflake.execute({ sqlText: "CREATE OR REPLACE WAREHOUSE test

我正在尝试编写一个创建用户、角色和仓库的过程。此过程由具有ACCOUNTADMIN角色的高权限用户执行

USE ACCOUNT_ADMIN;
USE WAREHOUSE PROVISIONER;

CREATE or replace PROCEDURE TEST()
  RETURNS VARCHAR
  LANGUAGE javascript
  AS
  $$
    snowflake.execute({ sqlText: "CREATE OR REPLACE WAREHOUSE test;"});
    return "";
  $$
;
现在如果我查询当前仓库:

SELECT CURRENT_WAREHOUSE();
我有食物供应员

如果我现在调用程序

CALL TEST();
仓库换了

SELECT CURRENT_WAREHOUSE();
现在返回测试

这是正常的行为吗?这是一个问题,因为仓库是在过程之外更改的,并且我不能在过程内部使用use warehouse语句


是否有其他方法可以在不更改当前仓库的情况下从过程创建仓库?

是的,这是预期的。有关背景信息,请参阅


解决此问题的一种方法是在存储过程开始时获取当前仓库,然后在存储过程结束时再次将其设置为当前仓库。

在我的测试中,当我直接创建仓库时,也会发生这种情况,而无需过程。是,创建仓库和数据库/模式也总是将它们设置为当前的。这很好,但我可以看到,它没有文档记录。不要吹毛求疵。谢谢这个问题是存储过程中不允许使用仓库,所以我不能将当前仓库更改回以前的仓库。