Учебники

Teradata — Макросы

Макрос — это набор операторов SQL, которые сохраняются и выполняются путем вызова имени макроса. Определение макросов хранится в словаре данных. Пользователям нужна только привилегия EXEC для выполнения макроса. Пользователям не нужны отдельные привилегии для объектов базы данных, используемых внутри макроса. Макро операторы выполняются как одна транзакция. В случае сбоя одного из операторов SQL в макросе все операторы откатываются. Макросы могут принимать параметры. Макросы могут содержать операторы DDL, но это должен быть последний оператор в макросе.

Создать макросы

Макросы создаются с помощью оператора CREATE MACRO.

Синтаксис

Ниже приведен общий синтаксис команды CREATE MACRO.

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

пример

Рассмотрим следующую таблицу сотрудников.

Сотрудник № Имя Фамилия Дата рождения
101 Майк Джеймс 1/5/1980
104 Alex Стюарт 11/6/1984
102 Роберт Williams 3/5/1983
105 Роберт Джеймс 12/1/1984
103 Питер Павел 4/1/1983

В следующем примере создается макрос с именем Get_Emp. Он содержит оператор выбора для извлечения записей из таблицы сотрудников.

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

Выполнение макросов

Макросы выполняются с помощью команды EXEC.

Синтаксис

Ниже приводится синтаксис команды EXECUTE MACRO.

EXEC <macroname>; 

пример

В следующем примере выполняются имена макросов Get_Emp; Когда следующая команда выполняется, она извлекает все записи из таблицы сотрудников.

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 

Параметризованные макросы

Макросы Teradata могут принимать параметры. В макросе на эти параметры ссылаются; (точка с запятой).

Ниже приведен пример макроса, который принимает параметры.

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

Выполнение параметризованных макросов

Макросы выполняются с помощью команды EXEC. Вам нужны привилегии EXEC для выполнения макросов.

Синтаксис

Ниже приведен синтаксис оператора EXECUTE MACRO.

EXEC <macroname>(value);

пример

В следующем примере выполняются имена макросов Get_Emp; Он принимает сотрудника нет в качестве параметра и извлекает записи из таблицы сотрудников для этого сотрудника.