Teradata - 宏
宏是一组通过调用宏名称来存储和执行的 SQL 语句。宏的定义存储在数据字典中。用户只需要 EXEC 权限即可执行宏。用户不需要对宏中使用的数据库对象拥有单独的权限。宏语句作为单个事务执行。如果宏中的一个 SQL 语句失败,则所有语句都会回滚。宏可以接受参数。宏可以包含 DDL 语句,但这应该是宏中的最后一条语句。
创建宏
使用 CREATE MACRO 语句创建宏。
语法
以下是 CREATE MACRO 命令的通用语法。
CREATE MACRO <macroname> [(parameter1, parameter2,...)] ( <sql statements> );
示例
考虑以下员工表。
EmployeeNo | FirstName | LastName | BirthDate |
---|---|---|---|
101 | Mike | James | 1/5/1980 |
104 | Alex | Stuart | 11/6/1984 |
102 | Robert | Williams | 3/5/1983 |
105 | Robert | James | 12/1/1984 |
103 | Peter | Paul | 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;它接受员工编号作为参数并从员工表中提取该员工的记录。
EXEC Get_Emp_Salary(101); *** Query completed. One row found. 2 columns returned. *** Total elapsed time was 1 second. EmployeeNo NetPay ----------- ------------ 101 36000