Teradata 宏

2025年3月17日 | 阅读 3 分钟

宏是一组 SQL 语句,这些语句通过调用宏名称进行存储和执行。 宏的定义存储在数据字典中。

用户只需具有 EXEC 特权即可执行宏。 用户不需要对宏内部使用的数据库对象拥有单独的权限。

一个宏由一个或多个语句组成,这些语句可以通过执行单个语句来执行。 每次宏完成后,可以返回一行或多行数据。

宏语句作为单个事务执行。 如果宏中的 SQL 语句之一失败,则所有语句都会回滚。 宏可以接受参数。 宏可以包含 DDL 语句,但这应该是宏中的最后一个语句。

常用的 SQL 语句或一系列语句可以合并到宏中,并使用 SQL CREATE MACRO 语句进行定义。 宏中的注释使用 EXECUTE 语句执行。 宏可以包含一个 EXECUTE 语句,该语句执行另一个宏。

创建宏

创建宏的数据库或用户(如果要在其中创建宏)具有 CREATE MACRO 特权。 创建者会自动获得 DROP MACRO 和 EXECUTE 权限,以及 WITH GRANT OPTION。 宏的直接所有者

  • 它是宏存在的数据库,而不是创建它的用户。
  • 确定宏访问权限,而不是宏。
  • 必须具有执行宏的所有适当权限,包括 WITH GRANT OPTION

语法

宏是使用 CREATE MACRO 语句创建的。 以下是 CREATE MACRO 命令的通用语法。

  • macro_name: 新宏的名称。 如果未指定全限定名称,则使用默认数据库或用户。 宏的名称在其包含的用户或数据库中必须是唯一的。
员工 ID名字姓氏出生日期
202001迈克Richard11/05/1990
202002Robert威廉姆斯20/01/1988
202003彼得科林21/08/1985
202004Alexa斯图尔特10/12/1992
202005Robert彼得森19/03/1987

薪资表

员工 ID总收入Deduction (扣除额)NetPay (实付工资)
20200140,0004,00036,000
20200280,0006,00074,000
20200390,0007,00083,000
20200475,0005,00070,000
20200580,0000080,000

以下示例创建一个名为 Get_Emp 的宏。 它包含一个 select 语句,用于从 employee 表中检索记录。

执行宏

宏的直接所有者(宏所在的数据库)必须对请求集中命名的对象拥有必要的权限,以便在宏中包含语句。

语法

宏是使用 EXEC 命令执行的。 以下是 EXECUTE MACRO 命令的语法。

示例

以下示例执行宏名称 Get_Emp; 当执行以下命令时,它将从 employee 表中检索所有记录。

参数化宏

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

示例

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

执行参数化宏

宏是使用 EXEC 命令执行的。 我们需要 EXEC 特权才能执行宏。

语法

以下是 EXECUTE MACRO 语句的语法。

示例

以下示例执行宏名称 Get_Emp。 它接受员工 ID 作为参数,并从 employee 表中提取该员工的记录。

替换宏

REPLACE 特权取决于要替换的宏是否已经存在。

  • 如果宏已经存在,则需要该宏或包含它的数据库或用户的 DROP MACRO 特权。
  • 如果宏尚不存在,则需要该宏或其包含数据库或用户的 CREATE MACRO 特权。

注意

  • 一旦宏被替换,它的直接所有者是它所在的数据库,而不是替换它的用户。
  • 立即拥有的数据库必须具有执行宏的所有适当权限,包括 WITH GRANT OPTION。

下一个主题Teradata OLAP 函数