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
solo catalogo Unity
Crea una routine in Unity Catalog che accetta o modifica gli argomenti, esegue un set di istruzioni SQL e, facoltativamente, restituisce un set di risultati.
Oltre alla chiamata al parametro posizionale, è anche possibile richiamare le routine usando la chiamata al parametro denominato.
Sintassi
CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
procedure_name ( [ procedure_parameter [, ...] ] )
[ characteristic [...] ]
AS compound_statement
procedure_parameter
[ IN | OUT | INOUT ] parameter_name data_type
[ DEFAULT default_expression ] [ COMMENT parameter_comment ]
characteristic
{ LANGUAGE SQL |
SQL SECURITY INVOKER |
NOT DETERMINISTIC |
COMMENT procedure_comment |
DEFAULT COLLATION UTF8_BINARY |
MODIFIES SQL DATA }
Parametri
O SOSTITUISCI
Se specificato, viene sostituita una procedura con lo stesso nome. Non è possibile sostituire una funzione esistente con una routine. Non è possibile specificare questo parametro con
IF NOT EXISTS.SE NON ESISTE
Se viene specificato, crea la procedura solo quando non esiste già una procedura con tale nota. Se esiste una routine con lo stesso nome, l'istruzione viene ignorata. Non è possibile specificare questo parametro con
OR REPLACE.-
Nome della procedura. Facoltativamente, è possibile qualificare il nome della routine con un nome di schema. Se il nome non è qualificato, la procedura permanente viene creata nello schema corrente.
Il nome della routine deve essere univoco per tutte le routine (routine e funzioni) nello schema.
procedure_parameter
Specifica un parametro della routine.
-
Il nome del parametro deve essere univoco all'interno della routine.
IN, INOUT o OUT
Facoltativamente, descrive la modalità del parametro .
IN
Definisce un parametro di solo input. Si tratta dell'impostazione predefinita.
INOUT
Definisce un parametro che accetta un argomento di input-output. Se la procedura viene completata senza un errore non gestito, restituisce il valore finale del parametro come output.
USCITA
Definisce un parametro di output. Il parametro viene inizializzato in
NULLe, se la procedura viene completata senza un errore non gestito, restituisce il valore finale del parametro come output.
-
Qualsiasi tipo di dati supportato.
-
Valore predefinito facoltativo da utilizzare quando una chiamata di funzione non assegna un argomento al parametro .
default_expressiondeve essere convertibile adata_type. L'espressione non deve fare riferimento a un altro parametro o contenere una sottoquery.Quando si specifica un valore predefinito per un parametro, anche tutti i parametri seguenti devono avere un valore predefinito.
DEFAULTnon è supportato per parametriOUT. Commento osservazione
Descrizione facoltativa del parametro.
commentdeve essere un valoreSTRINGletterale.
-
-
Istruzione composta SQL (
BEGIN ... END) con la definizione della routine SQL.Quando la procedura viene creata, viene convalidata la correttezza sintattica. Il corpo della routine non viene convalidato per la correttezza semantica fino a quando non viene richiamata la routine.
caratteristica
La caratteristica
SQL SECURITY INVOKEReLANGUAGE SQLsono richieste. Tutti gli altri sono facoltativi. È possibile specificare qualsiasi numero di caratteristiche in qualsiasi ordine, ma è possibile specificare ogni clausola una sola volta.LINGUAGGIO SQL
Linguaggio dell'implementazione della funzione.
SQL SECURITY INVOKER
Specifica che tutte le istruzioni SQL nel corpo della procedura verranno eseguite sotto l'autorità dell'utente che richiama la procedura.
Durante la risoluzione delle relazioni e delle routine all'interno del corpo della procedura, Azure Databricks usa il catalogo corrente e lo schema corrente al momento della chiamata.
NON DETERMINISTICA
Si presuppone che una routine non deterministica, vale a dire che può restituire risultati diversi per ogni chiamata, anche quando viene chiamata con gli stessi argomenti.
COMMENTO procedure_comment
Un commento per la procedura.
procedure_commentdeve essereSTRINGletterale. Il valore predefinito èNULL.COLLAZIONE PREDEFINITA UTF8_BINARY
Si applica a:
controllo SQL di Databricks
Databricks Runtime 17.1 e versioni successiveForza le regole di confronto predefinite della routine su
UTF8_BINARY. Questa clausola è obbligatoria se lo schema in cui viene creata la routine ha regole di confronto predefinite diverse daUTF8_BINARY. Le regole di confronto predefinite della routine vengono utilizzate come regole di confronto predefinite per i parametri della routine e le regole di confronto predefinite per tutti i valori letterali stringa e le variabili locali nel corpo della routine.MODIFICA I DATI SQL
Si presuppone che una procedura modifichi i dati SQL.
Esempi
-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
LANGUAGE SQL
SQL SECURITY INVOKER
COMMENT 'Add two numbers'
AS BEGIN
SET sum = x + y;
SET total = total + sum;
END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
3 3
> CALL add(3, 4, sum, total);
7 10
-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SELECT 'Hello!';
CASE mode WHEN 'informal' THEN SELECT 'Hi!';
WHEN 'formal' THEN SELECT 'Pleased to meet you.';
END CASE;
END;
> CALL greeting('informal');
Hi!
> CALL greeting('formal');
Pleased to meet you.
> CALL greeting('casual');
Hello!