Teradata 宏


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

创建宏


使用 CREATE MACRO 语句创建宏。

语法

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

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

例子

考虑下面的 Employee 表。

职工号 LastName 出生日期
101 Mike James 1/5/1980
104 Alex Stuart 11/6/1984
102 Robert Williams 3/5/1983
105 Robert James 1984 年 12 月 1 日
103 Peter Paul 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