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