Teradata 宏

2018-01-12 15:13 更新

宏是一組SQL語句,通過調(diào)用宏名稱來存儲(chǔ)和執(zhí)行。 宏的定義存儲(chǔ)在數(shù)據(jù)字典中。 用戶只需要EXEC特權(quán)來執(zhí)行宏。 用戶不需要對宏中使用的數(shù)據(jù)庫對象具有單獨(dú)的特權(quán)。 宏語句作為單個(gè)事務(wù)執(zhí)行。 如果宏中的某個(gè)SQL語句失敗,則所有語句都將回滾。 宏可以接受參數(shù)。 宏可以包含DDL語句,但應(yīng)該是宏中的最后一個(gè)語句。

創(chuàng)建宏

宏是使用CREATE MACRO語句創(chuàng)建的。

語法

以下是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

下面的示例創(chuàng)建一個(gè)名為Get_Emp的宏。 它包含一個(gè)select語句,用于從employee表中檢索記錄。

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

執(zhí)行宏

宏使用EXEC命令執(zhí)行。

例子

以下是EXECUTE MACRO命令的語法。

EXEC <macroname>; 

例子

以下示例執(zhí)行宏名稱Get_Emp; 執(zhí)行以下命令時(shí),它將從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 

參數(shù)化宏

Teradata宏可以接受參數(shù)。 在宏內(nèi),這些參數(shù)用引用; (分號)。

以下是接受參數(shù)的宏的示例。

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

執(zhí)行參數(shù)化宏

宏使用EXEC命令執(zhí)行。 您需要EXEC特權(quán)才能執(zhí)行宏。

例子

以下是EXECUTE MACRO語句的語法。

EXEC <macroname>(value);

例子

以下示例執(zhí)行宏名稱Get_Emp; 它接受員工no作為參數(shù),并從該員工的雇員表中提取記錄。

EXEC Get_Emp_Salary(101); 
*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.
 
EmployeeNo      NetPay 
-----------  ------------ 
   101           36000 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號