Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Deze functie bevindt zich in openbare preview-versie.
Van toepassing op:
Databricks SQL Databricks Runtime 17.0 en hoger
alleen Unity Catalog
Hiermee maakt u een procedure in Unity Catalog die argumenten gebruikt of wijzigt, een set SQL-instructies uitvoert en eventueel een resultatenset retourneert.
Naast positionele parameteraanroepen kunt u ook procedures aanroepen met behulp van benoemde parameteraanroepen.
Syntaxis
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 }
Parameterwaarden
OF VERVANGEN
Indien opgegeven, wordt een procedure met dezelfde naam vervangen. U kunt een bestaande functie niet vervangen door een procedure. U kunt deze parameter niet opgeven met
IF NOT EXISTS.ALS NIET BESTAAT
Indien opgegeven, wordt de procedure alleen gemaakt wanneer er nog geen procedure met die specifieke opmerking bestaat. Als er een procedure met dezelfde naam bestaat, wordt de statement genegeerd. U kunt deze parameter niet opgeven met
OR REPLACE.-
Een naam voor de procedure. U kunt desgewenst de naam van de procedure kwalificeren met een schemanaam. Als de naam niet is gekwalificeerd, wordt de permanente procedure gemaakt in het huidige schema.
De naam van de procedure moet uniek zijn voor alle routines (procedures en functies) in het schema.
procedure_parameter
Hiermee geeft u een parameter van de procedure.
-
De parameternaam moet uniek zijn binnen de procedure.
IN, INOUT of OUT
Beschrijft eventueel de modus van de parameter.
IN
Hiermee definieert u een invoerparameter die alleen als invoer dient. Dit is de standaardwaarde.
INOUT
Hiermee definieert u een parameter die een invoer-uitvoerargument accepteert. Als de procedure is voltooid zonder een niet-verwerkte fout, wordt de uiteindelijke parameterwaarde als uitvoer geretourneerd.
BUITEN
Hiermee definieert u een uitvoerparameter. De parameter wordt geïnitialiseerd met
NULLen, als de procedure zonder een niet-verwerkte fout wordt voltooid, zal de uiteindelijke parameterwaarde als uitvoer worden geretourneerd.
-
Elk ondersteund gegevenstype.
STANDAARD default_expression
Een optionele standaardwaarde die moet worden gebruikt wanneer een functieaanroep geen argument toewijst aan de parameter.
default_expressionmoet worden gegoten naardata_type. De expressie mag niet verwijzen naar een andere parameter of een subquery bevatten.Wanneer u een standaardwaarde voor één parameter opgeeft, moeten alle volgende parameters ook een standaardwaarde hebben.
DEFAULTwordt niet ondersteund voorOUTparameters.OPMERKING opmerking
Een optionele beschrijving van de parameter.
commentmoet eenSTRINGletterlijke waarde zijn.
-
-
Een samengestelde SQL-instructie (
BEGIN ... END) met de definitie van de SQL-procedure.Wanneer de procedure wordt aangemaakt, wordt de syntactische juistheid gevalideerd. De hoofdtekst van de procedure wordt pas gevalideerd op semantische juistheid als de procedure wordt aangeroepen.
karakteristiek
Het kenmerk
SQL SECURITY INVOKERenLANGUAGE SQLzijn vereist. Alle andere zijn optioneel. U kunt in elke volgorde een willekeurig aantal kenmerken opgeven, maar u kunt elke component slechts één keer opgeven.LANGUAGE SQL
De taal van de functie-implementatie.
SQL SECURITY INVOKER
Hiermee geeft u op dat sql-instructies in de hoofdtekst van de procedure worden uitgevoerd onder de autoriteit van de gebruiker die de procedure aanroept.
Bij het oplossen van relaties en routines binnen de hoofdtekst van de procedure gebruikt Azure Databricks de huidige catalogus en het huidige schema op het moment van aanroepen.
NIET DETERMINISTISCH
Een procedure wordt verondersteld niet-deterministisch, wat betekent dat deze verschillende resultaten kan retourneren bij elke aanroep, zelfs wanneer deze wordt aangeroepen met dezelfde argumenten.
OPMERKING procedure_comment
Een opmerking voor de procedure.
procedure_commentmoet letterlijk zijnSTRING. De standaardwaarde isNULL.STANDAARD COLLATIE UTF8_BINARY
Van toepassing op:
Databricks
Databricks Runtime 17.1 en hogerDwingt de standaard collatie van de procedure af naar
UTF8_BINARY. Deze component is verplicht als het schema waarin de procedure wordt gemaakt, een andere standaardsortering heeft danUTF8_BINARY. De standaardsortering van de procedure wordt gebruikt als de standaardsortering voor procedureparameters en de standaardsortering voor alle letterlijke tekenreeksen en lokale variabelen in de hoofdtekst van de procedure.WIJZIGT SQL-GEGEVENS
Er wordt uitgegaan van een procedure om SQL-gegevens te wijzigen.
Voorbeelden
-- 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!