Teradata - 宏



宏是一組儲存的 SQL 語句,透過呼叫宏名稱來執行。宏的定義儲存在資料字典中。使用者只需要 EXEC 許可權即可執行宏。使用者不需要對宏內部使用的資料庫物件擁有單獨的許可權。宏語句作為一個事務執行。如果宏中的一個 SQL 語句失敗,則所有語句都將回滾。宏可以接受引數。宏可以包含 DDL 語句,但它應該作為宏中的最後一個語句。

建立宏

宏使用 CREATE MACRO 語句建立。

語法

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

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

示例

考慮以下 Employee 表。

員工編號 FirstName LastName BirthDate
101 邁克 詹姆斯 1/5/1980
104 亞歷克斯 斯圖爾特 11/6/1984
102 羅伯特 威廉姆斯 3/5/1983
105 羅伯特 詹姆斯 12/1/1984
103 彼得 保羅 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 
廣告

© . All rights reserved.