Teradata教程

Teradata 宏

宏是一组通过调用宏名来存储和执行的SQL语句。宏的定义存储在数据字典中。用户只需要 EXEC 权限即可执行宏。用户不需要对宏内部使用的数据库对象拥有单独的权限。宏语句作为单个事务执行。如果宏中的 SQL 语句之一失败,则所有语句都将回滚。宏可以接受参数。宏可以包含 DDL 语句,但这应该是宏中的最后一条语句。

创建宏

宏是使用 CREATE MACRO 语句创建的。

语法

以下是 CREATE MACRO 命令的通用语法。
CREATE MACRO <macroname> [(parameter1, parameter2,...)] ( 
   <sql statements> 
);

示例

考虑以下员工表。
EmployeeNo 名字 姓氏 出生日期
101 迈克 詹姆斯 1/5/1980
104 亚历克斯 斯图尔特 11/6/1984
102 罗伯特 威廉姆斯 3/5/1983
105 罗伯特 詹姆斯 12/1/1984
103 彼得 保罗 4/1/1983
以下示例创建一个名为 Get_Emp 的宏。它包含一个 select 语句,用于从员工表中检索记录。
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 
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4