Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Importante
Cette fonctionnalité est disponible en préversion publique.
S'applique à :
Databricks SQL Databricks Runtime 17.0 et versions ultérieures
le catalogue Unity
Crée une procédure dans Le catalogue Unity qui accepte ou modifie des arguments, exécute un ensemble d’instructions SQL et retourne éventuellement un jeu de résultats.
Outre l’appel de paramètre positionnel, vous pouvez également appeler des procédures à l’aide d’un appel de paramètre nommé.
Syntaxe
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 }
Paramètres
OU REMPLACER
Si elle est spécifiée, une procédure portant le même nom est remplacée. Vous ne pouvez pas remplacer une fonction existante par une procédure. Vous ne pouvez pas spécifier ce paramètre avec
IF NOT EXISTS.SI N'EXISTE PAS
Si elle est spécifiée, crée la procédure uniquement lorsqu’une procédure avec cette note n’existe pas déjà. Si une procédure portant le même nom existe, l’instruction est ignorée. Vous ne pouvez pas spécifier ce paramètre avec
OR REPLACE.-
Nom de la procédure. Vous pouvez éventuellement qualifier le nom de la procédure avec un nom de schéma. Si le nom n’est pas qualifié, la procédure permanente est créée dans le schéma actuel.
Le nom de la procédure doit être unique pour toutes les routines (procédures et fonctions) dans le schéma.
procedure_parameter
Spécifie un paramètre de la procédure.
-
Le nom du paramètre doit être unique dans la procédure.
IN, INOUT ou OUT
Décrit éventuellement le mode du paramètre.
IN
Définit un paramètre d’entrée uniquement. Il s’agit de la valeur par défaut.
INOUT
Définit un paramètre qui accepte un argument d’entrée-sortie. Si la procédure se termine sans erreur non gérée, elle retourne la valeur finale du paramètre en tant que sortie.
DEHORS
Définit un paramètre de sortie. Le paramètre est initialisé
NULLet, si la procédure se termine sans erreur non gérée, elle retourne la valeur finale du paramètre en tant que sortie.
-
Tout type de données pris en charge.
DEFAULT default_expression
Valeur par défaut facultative à utiliser lorsqu’un appel de fonction n’affecte pas d’argument au paramètre.
default_expressiondoit être convertible en une valeur de typedata_type. L’expression ne doit pas faire référence à un autre paramètre ou contenir une sous-requête.Lorsque vous spécifiez une valeur par défaut pour un paramètre, tous les paramètres suivants doivent également avoir une valeur par défaut.
DEFAULTn’est pas pris en charge pour lesOUTparamètres.COMMENT comment
Description optionnelle du paramètre.
commentdoit être un littéralSTRING.
-
-
Instruction composée SQL (
BEGIN ... END) avec la définition de la procédure SQL.Lorsque la procédure est créée, la correction syntaxique est validée. Le corps de la procédure n’est pas validé pour la correction sémantique tant que la procédure n’est pas appelée.
caractéristique
Caractéristique
SQL SECURITY INVOKERetLANGUAGE SQLobligatoire. Tous les autres sont facultatifs. Vous pouvez spécifier n’importe quel nombre de caractéristiques dans n’importe quel ordre, mais vous ne pouvez spécifier chaque clause qu’une seule fois.LANGUAGE SQL
Langage de l’implémentation de la fonction.
SQL SECURITY INVOKER
Spécifie que toutes les instructions SQL dans le corps de la procédure seront exécutées sous l’autorité de l’utilisateur appelant la procédure.
Lors de la résolution des relations et des routines dans le corps de la procédure, Azure Databricks utilise le catalogue actuel et le schéma actuel au moment de l’appel.
NON DÉTERMINISTE
Une procédure est supposée non déterministe, ce qui signifie qu’elle peut retourner des résultats différents sur chaque appel, même lorsqu’elle est appelée avec les mêmes arguments.
COMMENTAIRE procedure_comment
Commentaire de la procédure.
procedure_commentdoit êtreSTRINGlittéral. La valeur par défaut estNULL.COLLATION PAR DÉFAUT UTF8_BINARY
S’applique à :
Databricks SQL
Databricks Runtime 17.1 et versions ultérieuresForce le classement par défaut de la procédure à
UTF8_BINARY. Cette clause est obligatoire si le schéma dans lequel la procédure est créée a un classement par défaut autre queUTF8_BINARY. Le classement par défaut de la procédure est utilisé comme classement par défaut pour les paramètres de procédure et le classement par défaut pour tous les littéraux de chaîne et variables locales dans le corps de la procédure.MODIFIE LES DONNÉES SQL
Une procédure est supposée modifier les données SQL.
Exemples
-- 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!