Teradata - makra
Makro to zestaw instrukcji SQL, które są przechowywane i wykonywane przez wywołanie nazwy makra. Definicja makr jest przechowywana w słowniku danych. Użytkownicy potrzebują tylko uprawnienia EXEC, aby wykonać makro. Użytkownicy nie potrzebują oddzielnych uprawnień do obiektów bazy danych używanych wewnątrz makra. Deklaracje makr są wykonywane jako pojedyncza transakcja. Jeśli jedna z instrukcji SQL w makrze nie powiedzie się, wszystkie instrukcje są wycofywane. Makra mogą akceptować parametry. Makra mogą zawierać instrukcje DDL, ale powinna to być ostatnia instrukcja w makrze.
Utwórz makra
Makra są tworzone za pomocą instrukcji CREATE MACRO.
Składnia
Poniżej znajduje się ogólna składnia polecenia CREATE MACRO.
CREATE MACRO <macroname> [(parameter1, parameter2,...)] ( 
   <sql statements> 
); 
    Przykład
Rozważ poniższą tabelę Pracownik.
| Pracownik numer | Imię | Nazwisko | Data urodzenia | 
|---|---|---|---|
| 101 | Mikrofon | James | 05.01.1980 | 
| 104 | Alex | Stuart | 06.11.1984 | 
| 102 | Robert | Williams | 05.03.1983 | 
| 105 | Robert | James | 12/1/1984 | 
| 103 | Piotr | Paweł | 01.04.1983 | 
Poniższy przykład tworzy makro o nazwie Get_Emp. Zawiera instrukcję wyboru służącą do pobierania rekordów z tabeli pracowników.
CREATE MACRO Get_Emp AS ( 
   SELECT 
   EmployeeNo, 
   FirstName, 
   LastName 
   FROM  
   employee 
   ORDER BY EmployeeNo; 
); 
    Wykonywanie makr
Makra są wykonywane za pomocą polecenia EXEC.
Składnia
Poniżej znajduje się składnia polecenia EXECUTE MACRO.
EXEC <macroname>; 
    Przykład
Poniższy przykład wykonuje nazwy makr Get_Emp; Wykonanie następującego polecenia powoduje pobranie wszystkich rekordów z tabeli pracowników.
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 
    Sparametryzowane makra
Makra Teradata mogą akceptować parametry. Wewnątrz makra do tych parametrów odwołuje się; (średnik).
Poniżej znajduje się przykład makra, które akceptuje parametry.
CREATE MACRO Get_Emp_Salary(EmployeeNo INTEGER) AS ( 
   SELECT 
   EmployeeNo, 
   NetPay 
   FROM  
   Salary 
   WHERE EmployeeNo = :EmployeeNo; 
); 
    Wykonywanie sparametryzowanych makr
Makra są wykonywane za pomocą polecenia EXEC. Do wykonywania makr potrzebne są uprawnienia EXEC.
Składnia
Poniżej znajduje się składnia instrukcji EXECUTE MACRO.
EXEC <macroname>(value); 
    Przykład
Poniższy przykład wykonuje nazwy makr Get_Emp; Przyjmuje pracownika nr jako parametr i wyodrębnia rekordy z tabeli pracowników dla tego pracownika.
EXEC Get_Emp_Salary(101); 
*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.
 
EmployeeNo      NetPay 
-----------  ------------ 
   101           36000