宏是一组SQL语句,通过调用宏名称来存储和执行.宏的定义存储在数据字典中.用户只需要EXEC权限即可执行宏.用户不需要对宏内使用的数据库对象具有单独的权限.宏语句作为单个事务执行.如果宏中的一个SQL语句失败,则回滚所有语句.宏可以接受参数.宏可以包含DDL语句,但这应该是宏中的最后一个语句.
创建宏
使用CREATE MACRO语句创建宏.
语法
以下是CREATE MACRO命令的通用语法.
CREATE MACRO[(parameter1, parameter2,...)] ( );
示例
考虑以下员工表.
EmployeeNo | FirstName | LastName | BirthDate |
---|---|---|---|
101 | Mike | 詹姆斯 | 1/5/1980 |
104 | Alex | Stuart | 11/6/1984 |
102 | Robert | Williams | 3/5/1983 |
105 | Robert | James | 12/1/1984 |
103 | 彼得 | 保罗 | 4/1/1983 |
以下示例创建一个名为Get_Emp的宏.它包含一个select语句,用于从employee表中检索记录.
CREATE MACRO Get_Emp AS ( SELECT EmployeeNo, FirstName, LastName FROM employee ORDER BY EmployeeNo; );
执行宏
使用EXEC命令执行宏.
语法
以下是EXECUTE MACRO命令的语法.
EXEC;
示例
以下示例执行宏名称Get_Emp;执行以下命令时,它将从employee表中检索所有记录.
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(value);
示例
以下示例执行宏名称Get_Emp;它接受employee no作为参数,并从该员工的employee表中提取记录.
EXEC Get_Emp_Salary(101); *** Query completed. One row found. 2 columns returned. *** Total elapsed time was 1 second. EmployeeNo NetPay ----------- ------------ 101 36000