Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Visualização Pública.
Aplica-se a:
Databricks SQL
Databricks Runtime 17.0 e superior
Invoca um procedimento armazenado por nome e passa argumentos de e para o procedimento.
As chamadas de procedimento podem ser aninhadas em até 64 níveis.
Observação
Não há suporte para a instrução CALL no ODBC.
Sintaxe
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
Parâmetros
-
O nome do procedimento a ser invocado. O nome do procedimento pode ser opcionalmente qualificado com um nome de esquema. Se o nome não estiver qualificado, o procedimento será resolvido no esquema atual. Se o procedimento não existir, um
ROUTINE_NOT_FOUNDerro será gerado. -
Para argumentos atribuídos a
INparâmetros, qualquer expressão que possa ser convertida para o tipo do parâmetro ou a palavra-chaveDEFAULT. ParaOUTeINOUTparâmetros, o argumento deve ser uma variável de sessão ou variável local.Se o procedimento falhar, os valores dos argumentos dos parâmetros
OUTeINOUTpermanecerão inalterados.Observação
O argumento deve corresponder ao tipo de dados do parâmetro. Isso inclui especificar, por exemplo:
DATE'2015-01-01', em vez de'2015-01-01'para umDATEparâmetro. -
O nome não qualificado de um parâmetro ao qual o
argExpré atribuído.
O número de argumentos não deve ser maior do que o número de parâmetros especificados para o procedimento.
Se você especificar menos argumentos do que parâmetros, os parâmetros deverão ser definidos com valores DEFAULT.
Exemplos
> CREATE OR REPLACE PROCEDURE area_of_rectangle
(IN x INT, IN y INT, OUT area INT, INOUT acc INT)
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SET area = x * y;
SET acc = acc + area;
SELECT 'Area of rectangle is: ' || area;
END;
-- Session varables to handle OUT and INOUT parameters
> DECLARE area INT;
> DECLARE acc INT DEFAULT 10;
-- Invocation by position
> CALL area_of_rectangle(5, 10, area, acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 60
-- Invocation by name
> CALL area_of_rectangle(y => 10, x => 5, area => area, acc => acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 120