Создание хранилища Снежинка в хранимой процедуре изменяет текущий склад - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь написать процедуру, которая создает пользователей, роли и вархаус. Эта процедура выполняется с пользователем с высоким уровнем привилегий с ролью 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();

Я получу PROVISIONER

Если Теперь я вызываю процедуру

CALL TEST();

Склад изменился

SELECT CURRENT_WAREHOUSE();

Теперь возвращается TEST

Это нормальное поведение? Это проблема, потому что хранилище изменено вне процедуры, и я не могу использовать оператор «USE WAREHOUSE» внутри процедуры.

Есть ли другой способ создать WAREHOUSE из процедуры без изменения текущего хранилища?

1 Ответ

1 голос
/ 19 января 2020

Да, это ожидается. См. документы для справочной информации.

Один из способов обойти это - получить текущий склад в начале вашей хранимой процедуры и снова установить его в качестве текущего в конец хранимой процедуры.

...