开发手册 欢迎您!
软件开发者资料库

Teradata - 宏

Teradata Macros - 从简单和简单的步骤学习Teradata,从基本到高级概念,包括简介,安装,架构,关系概念,数据类型,表格,数据操作,SELECT语句,逻辑和条件运算符,SET运算符,字符串处理,日期/时间函数,内置函数,聚合函数,CASE和COALESCE,主索引,连接,子查询,表类型,空间概念,二级索引,统计,压缩,解释,哈希算法,JOIN索引,视图,宏,存储过程,JOIN策略,分区主索引,OLAP功能,数据保护,用户管理,性能调整,FastLoad,MultiLoad,FastExport,BTEQ。

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

创建宏

使用CREATE MACRO语句创建宏.

语法

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

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

示例

考虑以下员工表.

EmployeeNoFirstNameLastNameBirthDate
101Mike詹姆斯1/5/1980
104AlexStuart11/6/1984
102RobertWilliams3/5/1983
105RobertJames12/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