Teradata - Macro
La macro è un insieme di istruzioni SQL che vengono memorizzate ed eseguite chiamando il nome della macro. La definizione di macro è archiviata nel dizionario dei dati. Gli utenti necessitano solo del privilegio EXEC per eseguire la macro. Gli utenti non necessitano di privilegi separati sugli oggetti del database utilizzati all'interno della Macro. Le istruzioni macro vengono eseguite come una singola transazione. Se una delle istruzioni SQL in Macro non riesce, viene eseguito il rollback di tutte le istruzioni. Le macro possono accettare parametri. Le macro possono contenere istruzioni DDL, ma questa dovrebbe essere l'ultima istruzione in Macro.
Crea macro
Le macro vengono create utilizzando l'istruzione CREATE MACRO.
Sintassi
Di seguito è riportata la sintassi generica del comando CREATE MACRO.
CREATE MACRO <macroname> [(parameter1, parameter2,...)] (
<sql statements>
);
Esempio
Considera la seguente tabella Employee.
EmployeeNo | Nome di battesimo | Cognome | Data di nascita |
---|---|---|---|
101 | Mike | James | 1/5/1980 |
104 | Alex | Stuart | 11/6/1984 |
102 | Roberto | Williams | 3/5/1983 |
105 | Roberto | James | 12/1/1984 |
103 | Peter | Paolo | 4/1/1983 |
L'esempio seguente crea una macro chiamata Get_Emp. Contiene un'istruzione select per recuperare i record dalla tabella dei dipendenti.
CREATE MACRO Get_Emp AS (
SELECT
EmployeeNo,
FirstName,
LastName
FROM
employee
ORDER BY EmployeeNo;
);
Esecuzione di macro
Le macro vengono eseguite utilizzando il comando EXEC.
Sintassi
Di seguito è riportata la sintassi del comando EXECUTE MACRO.
EXEC <macroname>;
Esempio
L'esempio seguente esegue i nomi delle macro Get_Emp; Quando viene eseguito il seguente comando, recupera tutti i record dalla tabella dei dipendenti.
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
Macro parametrizzate
Le macro Teradata possono accettare parametri. All'interno di una macro, questi parametri sono referenziati con; (punto e virgola).
Di seguito è riportato un esempio di una macro che accetta parametri.
CREATE MACRO Get_Emp_Salary(EmployeeNo INTEGER) AS (
SELECT
EmployeeNo,
NetPay
FROM
Salary
WHERE EmployeeNo = :EmployeeNo;
);
Esecuzione di macro con parametri
Le macro vengono eseguite utilizzando il comando EXEC. È necessario il privilegio EXEC per eseguire le macro.
Sintassi
Di seguito è riportata la sintassi dell'istruzione EXECUTE MACRO.
EXEC <macroname>(value);
Esempio
L'esempio seguente esegue i nomi delle macro Get_Emp; Accetta il dipendente no come parametro ed estrae i record dalla tabella dei dipendenti per quel dipendente.
EXEC Get_Emp_Salary(101);
*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo NetPay
----------- ------------
101 36000