CALL

Chama um procedimento armazenado.

Consulte também:

CREATE PROCEDURE , SHOW PROCEDURES

Sintaxe

CALL <procedure_name> ( [ [ <arg_name> => ] <arg> , ... ] )
  [ INTO :<snowflake_scripting_variable> ]
Copy

Parâmetros obrigatórios

procedure_name ( [ [ arg_name => ] arg , ... ] )

Especifica o identificador (procedure_name) para o procedimento a ser chamado e quaisquer argumentos de entrada.

Você pode especificar os argumentos de entrada por nome (arg_name => arg) ou por posição (arg).

Observe o seguinte:

  • Você deve especificar todos os argumentos por nome ou por posição. Você não pode especificar alguns dos argumentos por nome e outros argumentos por posição.

    Ao especificar um argumento por nome, você não pode usar aspas duplas no nome do argumento.

  • Se duas funções ou dois procedimentos tiverem o mesmo nome, mas tipos de argumento diferentes, você poderá usar os nomes dos argumentos para especificar qual função ou procedimento executar, se os nomes dos argumentos forem diferentes. Consulte Sobrecarga de procedimentos e funções.

Parâmetros opcionais

INTO :snowflake_scripting_variable

Define a variável do Script Snowflake especificada para o valor de retorno do procedimento armazenado.

Notas de uso

  • Os nomes dos procedimentos não são necessariamente únicos dentro do esquema; os procedimentos armazenados são identificados e resolvidos por seus tipos de argumentos, assim como seus nomes (ou seja, os procedimentos armazenados podem ser sobrecarregados).

  • Fora de um bloco do Script Snowflake, o valor retornado pelo procedimento armazenado não pode ser utilizado, pois a chamada não pode fazer parte de uma expressão.

    Em um bloco do Script Snowflake, você pode especificar INTO :snowflake_scripting_variable para capturar o valor de retorno de um procedimento armazenado em uma variável do Script Snowflake.

  • Os procedimentos armazenados não são atômicos; se uma instrução em um procedimento armazenado falhar, as outras instruções no procedimento armazenado não são necessariamente revertidas. Para obter mais informações sobre procedimentos armazenados e transações, consulte Gerenciamento de transações.

  • Você também pode criar e chamar um procedimento anônimo usando CALL (com procedimento anônimo).

Exemplos

O exemplo a seguir chama um procedimento armazenado chamado sv_proc1 e passa em uma cadeia de cadeia de caracteres literal e numérica como argumentos de entrada. O exemplo especifica os argumentos por posição:

CALL sv_proc1('Manitoba', 127.4);
Copy

Você também pode especificar os argumentos por seus nomes:

CALL sv_proc1(province => 'Manitoba', amount => 127.4);
Copy

O exemplo a seguir demonstra como definir e passar uma variável de sessão como um argumento de entrada para um procedimento armazenado:

SET Variable1 = 49;
CALL sv_proc2($Variable1);
Copy

A seguir é mostrado um exemplo de um bloco do Script Snowflake que captura o valor de retorno de um procedimento armazenado em uma variável do Script Snowflake.

DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
Copy

Nota: se você estiver usando SnowSQL ou Classic Console, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na Classic Console):

EXECUTE IMMEDIATE $$
DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
$$
;
Copy

Para exemplos mais extensos de criação e chamada de procedimentos armazenados, consulte Como trabalhar com procedimentos armazenados.