Stored procedures 在存储过程中创建雪花仓库会更改当前仓库
我正在尝试编写一个创建用户、角色和仓库的过程。此过程由具有ACCOUNTADMIN角色的高权限用户执行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
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语句
是否有其他方法可以在不更改当前仓库的情况下从过程创建仓库?是的,这是预期的。有关背景信息,请参阅
解决此问题的一种方法是在存储过程开始时获取当前仓库,然后在存储过程结束时再次将其设置为当前仓库。在我的测试中,当我直接创建仓库时,也会发生这种情况,而无需过程。是,创建仓库和数据库/模式也总是将它们设置为当前的。这很好,但我可以看到,它没有文档记录。不要吹毛求疵。谢谢这个问题是存储过程中不允许使用仓库,所以我不能将当前仓库更改回以前的仓库。