Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks SQL
Databricks Runtime 17.0 e superiores
Chama um procedimento armazenado pelo nome e transmite argumentos para e desde o procedimento.
As chamadas de procedimento podem ser aninhadas em até 64 níveis.
Observação
A instrução CALL não é suportada 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, é gerado um
ROUTINE_NOT_FOUNDerro. -
Para argumentos atribuídos a
INparâmetros, qualquer expressão de um tipo que possa ser convertida para o parâmetro ou aDEFAULTpalavra-chave. ParaOUTeINOUTparâmetros, o argumento deve ser uma variável de sessão ou variável local.Se o procedimento falhar, os valores de argumento dos
OUTparâmetros eINOUTpermanecerão inalterados.Observação
O argumento deve corresponder ao tipo de dado do parâmetro. Isto 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 os parâmetros, os parâmetros deverão ser definidos com DEFAULT valores.
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