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