Teradata - Macros

Macro est un ensemble d'instructions SQL qui sont stockées et exécutées en appelant le nom de la macro. La définition des macros est stockée dans le dictionnaire de données. Les utilisateurs n'ont besoin que du privilège EXEC pour exécuter la macro. Les utilisateurs n'ont pas besoin de privilèges distincts sur les objets de base de données utilisés dans la macro. Les instructions de macro sont exécutées en une seule transaction. Si l'une des instructions SQL de Macro échoue, toutes les instructions sont annulées. Les macros peuvent accepter des paramètres. Les macros peuvent contenir des instructions DDL, mais cela devrait être la dernière instruction de Macro.

Créer des macros

Les macros sont créées à l'aide de l'instruction CREATE MACRO.

Syntaxe

Voici la syntaxe générique de la commande CREATE MACRO.

CREATE MACRO <macroname> [(parameter1, parameter2,...)] ( 
   <sql statements> 
);

Exemple

Considérez le tableau des employés suivant.

Numéro d'employé Prénom Nom de famille Date de naissance
101 Mike James 05/01/1980
104 Alex Stuart 06/11/1984
102 Robert Williams 05/03/1983
105 Robert James 01/12/1984
103 Peter Paul 01/04/1983

L'exemple suivant crée une macro appelée Get_Emp. Il contient une instruction de sélection pour récupérer les enregistrements de la table des employés.

CREATE MACRO Get_Emp AS ( 
   SELECT 
   EmployeeNo, 
   FirstName, 
   LastName 
   FROM  
   employee 
   ORDER BY EmployeeNo; 
);

Exécution de macros

Les macros sont exécutées à l'aide de la commande EXEC.

Syntaxe

Voici la syntaxe de la commande EXECUTE MACRO.

EXEC <macroname>;

Exemple

L'exemple suivant exécute les noms de macro Get_Emp; Lorsque la commande suivante est exécutée, elle récupère tous les enregistrements de la table des employés.

EXEC Get_Emp; 
*** Query completed. 5 rows found. 3 columns returned. 
*** Total elapsed time was 1 second.  
EmployeeNo             FirstName                      LastName 
-----------  ------------------------------  --------------------------- 
   101                  Mike                          James 
   102                  Robert                        Williams 
   103                  Peter                         Paul 
   104                  Alex                          Stuart 
   105                  Robert                        James

Macros paramétrées

Les macros Teradata peuvent accepter des paramètres. Dans une macro, ces paramètres sont référencés avec; (point-virgule).

Voici un exemple de macro qui accepte des paramètres.

CREATE MACRO Get_Emp_Salary(EmployeeNo INTEGER) AS ( 
   SELECT 
   EmployeeNo, 
   NetPay 
   FROM  
   Salary 
   WHERE EmployeeNo = :EmployeeNo; 
);

Exécution de macros paramétrées

Les macros sont exécutées à l'aide de la commande EXEC. Vous avez besoin du privilège EXEC pour exécuter les macros.

Syntaxe

Voici la syntaxe de l'instruction EXECUTE MACRO.

EXEC <macroname>(value);

Exemple

L'exemple suivant exécute les noms de macro Get_Emp; Il accepte l'employé no comme paramètre et extrait les enregistrements de la table des employés pour cet employé.

EXEC Get_Emp_Salary(101); 
*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.
 
EmployeeNo      NetPay 
-----------  ------------ 
   101           36000