- Teradata 教程
- Teradata - 首頁
- Teradata 基礎
- Teradata - 簡介
- Teradata - 安裝
- Teradata - 架構
- Teradata - 關係型概念
- Teradata - 資料型別
- Teradata - 表
- Teradata - 資料操作
- Teradata - SELECT 語句
- 邏輯與條件運算子
- Teradata - SET 運算子
- Teradata - 字串操作
- Teradata - 日期/時間函式
- Teradata - 內建函式
- Teradata - 聚合函式
- Teradata - CASE 和 COALESCE
- Teradata - 主索引
- Teradata - 連線
- Teradata - 子查詢
- Teradata 高階
- Teradata - 表型別
- Teradata - 空間概念
- Teradata - 二級索引
- Teradata - 統計資訊
- Teradata - 壓縮
- Teradata - EXPLAIN
- Teradata - 雜湊演算法
- Teradata - 連線索引
- Teradata - 檢視
- Teradata - 宏
- Teradata - 儲存過程
- Teradata - 連線策略
- Teradata - 分割槽主索引
- Teradata - OLAP 函式
- Teradata - 資料保護
- Teradata - 使用者管理
- Teradata - 效能調優
- Teradata - FastLoad
- Teradata - MultiLoad
- Teradata - FastExport
- Teradata - BTEQ
- Teradata 有用資源
- Teradata - 問題與解答
- Teradata - 快速指南
- Teradata - 有用資源
- Teradata - 討論
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
廣告