Seleção de um procedimento armazenado¶
Alguns procedimentos armazenados retornam dados tabulares. Para selecionar e manipular esses dados tabulares, é possível chamar esses procedimentos armazenados na cláusula FROM de uma instrução SELECT.
Execute uma instrução SELECT com a palavra-chave TABLE¶
Ao chamar o procedimento armazenado, omita o comando CALL. Em vez disso, use a palavra-chave TABLE e nomeie o procedimento entre parênteses:
Exemplo que seleciona a partir de um procedimento armazenado¶
Este exemplo usa os dados da tabela a seguir:
O seguinte procedimento armazenado retorna informações de pedidos com base em um ID de usuário:
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
A instrução SELECT a seguir recupera os resultados do procedimento armazenado:
Limitações para seleção de um procedimento armazenado¶
As seguintes limitações se aplicam à seleção de um procedimento armazenado:
Somente procedimentos armazenados que executam instruções SELECT, SHOW, DESCRIBE ou CALL podem ser colocados na cláusula FROM de uma instrução SELECT. Procedimentos armazenados que fazem modificações usando operações DDL ou DML não são permitidos. Para procedimentos armazenados que emitem instruções CALL, essas limitações se aplicam aos procedimentos armazenados que são chamados.
Somente procedimentos armazenados que retornam dados tabulares com um esquema de saída estático podem ser colocados na cláusula FROM de uma instrução SELECT. As colunas de saída devem ser nomeadas e digitadas. Por exemplo, um procedimento armazenado com a seguinte cláusula RETURNS é compatível:
Um procedimento armazenado com a seguinte cláusula RETURNS não é compatível porque não retorna dados tabulares:
Um procedimento armazenado com a seguinte cláusula RETURNS não é compatível porque não fornece um esquema de saída fixa:
O procedimento armazenado deve ser chamado na cláusula FROM de um bloco SELECT em uma das seguintes instruções:
O procedimento armazenado não pode aceitar argumentos de entrada correlacionados de seu escopo externo, como uma referência a qualquer CTE definida fora da instrução SELECT.
Se um argumento contiver uma subconsulta, essa subconsulta não poderá usar uma CTE definida pela cláusula WITH.
Uma instrução SELECT com uma chamada de procedimento armazenado não pode ser usada no corpo de uma exibição, uma função definida pelo usuário (UDF), uma função de tabela definida pelo usuário (UDTF) ou em objetos como políticas de acesso a linhas e políticas de mascaramento de dados.
Você não pode usar variáveis de vinculação em uma instrução SELECT que chama um procedimento armazenado. Por exemplo, as seguintes instruções SELECT não são permitidas: