codecamp

Teradata 宏

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

创建宏

宏是使用CREATE MACRO语句创建的。

语法

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

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

例子

考虑以下Employee表。

员工不名字生日
101MikeJames1/5/1980
104AlexStuart11/6/1984
102RobertWilliams3/5/1983
105RobertJames12/1/1984
103PeterPaul4/1/1983

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

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

执行宏

宏使用EXEC命令执行。

例子

以下是EXECUTE MACRO命令的语法。

EXEC <macroname>; 

例子

以下示例执行宏名称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 <macroname>(value);

例子

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

EXEC Get_Emp_Salary(101); 
*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.
 
EmployeeNo      NetPay 
-----------  ------------ 
   101           36000 
Teradata 视图
Teradata 存储过程
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }