Teradata 简明教程

Teradata - Macros

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

Create Macros

使用 CREATE MACRO 语句创建宏。

Syntax

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

CREATE MACRO <macroname> [(parameter1, parameter2,...)] (
   <sql statements>
);

Example

考虑以下 Employee 表。

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 语句以从员工表中检索记录。

CREATE MACRO Get_Emp AS (
   SELECT
   EmployeeNo,
   FirstName,
   LastName
   FROM
   employee
   ORDER BY EmployeeNo;
);

Executing Macros

使用 EXEC 命令执行宏。

Syntax

以下为 EXECUTE MACRO 命令的语法。

EXEC <macroname>;

Example

以下示例执行名为 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

Parameterized Macros

Teradata 宏可以接受参数。在宏中,这些参数用 ;(分号)引用。

以下是接受参数的宏示例。

CREATE MACRO Get_Emp_Salary(EmployeeNo INTEGER) AS (
   SELECT
   EmployeeNo,
   NetPay
   FROM
   Salary
   WHERE EmployeeNo = :EmployeeNo;
);

Executing Parameterized Macros

使用 EXEC 命令执行宏。您需要 EXEC 权限才能执行宏。

Syntax

以下为 EXECUTE MACRO 语句的语法。

EXEC <macroname>(value);

Example

以下示例执行名为 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