#snowflake-cloud-data-platform
#платформа облачных данных snowflake
Вопрос:
Я вызываю заблокированную процедуру через SNOWSQL и получаю ошибку ниже.
002141 (42601): ошибка компиляции SQL: неизвестная пользовательская функция ETL_SCHEMA.PROC
Ниже приведен запрос snowsql:
snowsql -c newConnection -o log_level=DEBUG -r ACCT_ROLE -w ETL_XS_WH -d ETL_DEV_DB -s ETL_SCHEMA -q "CALL ETL_SCHEMA.PROC('202')" -o friendly=False -o header=False -o output_format=plain -o timing=False
Здесь что-то не так?
Ответ №1:
CALL ETL_SCHEMA.PROC('202')
Работает ли ваш веб-интерфейс Snowflake? Возможно, это не хранимая процедура, а определяемая пользователем функция.
Комментарии:
1. да, он работает нормально, когда я работаю в веб-графическом интерфейсе
Ответ №2:
Проблема, с которой вы столкнулись, связана либо с разрешениями, либо с проблемой пути поиска.
Я бы рекомендовал добавить префикс «etl_schema» к имени базы данных (он же полное имя) и попробовать это. Вы также можете просто запустить select current_role(), current_database(), current_schema();
команду вместо команды вызова, чтобы узнать, каков контекст, возможно, в конфигурации есть что-то, что перезаписывает аргументы, переданные с помощью команды.
Комментарии:
1. Спасибо, Рич, я проверил, что могу запустить процедуру из ВЕБ-интерфейса, но из snowsql не могу ее запустить. ниже приведен сценарий оболочки, который я использую для запуска процедуры.
#!/bin/ksh export SNOWSQL_ACCOUNT=accountname; export SNOWSQL_USER=useid; export SNOWSQL_PWD=Password; export SNOWSQL_DATABASE=DEV_DB; export SNOWSQL_SCHEMA=ETL_SCHEMA; snowsql -a $SNOWSQL_ACCOUNT -u $SNOWSQL_USER --variable SNOWSQL_PWD=$SNOWSQL_PWD -o log_level=DEBUG -o log_file=~/snowsql_sso_debug.log -r SRVC_ACCT_ROLE -w ETL_XS_WH -d DEV_DB -s ETL_SCHEMA -q "CALL ETL_SCHEMA.PROC('202')"
2. пожалуйста, попробуйте ^ это (то, что вы написали), но замените команду SQL на ту, которую я предоставил, чтобы проверить «контекст» вашего сеанса.
3. схема не существует, поэтому она выдает ошибку. я проверю, как только схема будет доступна, и обновлю свой комментарий, спасибо!