📜  Teradata-宏

📅  最后修改于: 2020-11-29 09:06:30             🧑  作者: Mango


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

创建宏

使用CREATE MACRO语句创建宏。

句法

以下是CREATE MACRO命令的通用语法。

CREATE MACRO  [(parameter1, parameter2,...)] ( 
    
);

考虑下面的雇员表。

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的宏。它包含一个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;它接受雇员编号作为参数,并从雇员表中提取该雇员的记录。

EXEC Get_Emp_Salary(101); 
*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.
 
EmployeeNo      NetPay 
-----------  ------------ 
   101           36000