Макрос — это набор операторов 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; Он принимает сотрудника нет в качестве параметра и извлекает записи из таблицы сотрудников для этого сотрудника.