Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa funzionalità è in Anteprima Pubblica.
Si applica a:
Databricks SQL
Databricks Runtime 17.0 e versioni successive
Richiama una procedura memorizzata in base al nome e passa argomenti da e verso la procedura.
Le chiamate di routine possono essere annidate fino a 64 livelli.
Sintassi
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
Parametri
-
Nome della procedura da invocare. Il nome della routine può essere facoltativamente qualificato con un nome di schema. Se il nome non è qualificato, la procedura viene risolta nello schema corrente. Se la routine non esiste, viene generato un
ROUTINE_NOT_FOUNDerrore. -
Per gli argomenti assegnati ai
INparametri, qualsiasi espressione di un tipo che può essere convertito al parametro o alla parola chiaveDEFAULT. PerOUTi parametri eINOUTl'argomento deve essere una variabile di sessione o una variabile locale.Se la procedura ha esito negativo, i valori degli argomenti dei
OUTparametri eINOUTrimangono invariati.Annotazioni
L'argomento deve corrispondere al tipo di dati del parametro . Ciò include specificare, ad esempio,
DATE'2015-01-01'anziché'2015-01-01'per un parametroDATE. -
Nome non qualificato di un parametro a cui è assegnato .
argExpr
Il numero di argomenti non deve essere maggiore del numero di parametri specificati per la routine.
Se si specifica un numero inferiore di argomenti rispetto ai parametri, i parametri devono essere definiti con DEFAULT valori.
Esempi
> 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