Teradata-macros
Teradata-マクロ
マクロは、マクロ名を呼び出して保存および実行されるSQLステートメントのセットです。 マクロの定義はデータディクショナリに保存されます。 ユーザーは、マクロを実行するためのEXEC権限のみが必要です。 ユーザーは、マクロ内で使用されるデータベースオブジェクトに対する個別の特権を必要としません。 マクロ文は単一のトランザクションとして実行されます。 マクロ内のSQLステートメントの1つが失敗すると、すべてのステートメントがロールバックされます。 マクロはパラメーターを受け入れることができます。 マクロにはDDLステートメントを含めることができますが、これはマクロの最後のステートメントでなければなりません。
マクロを作成する
マクロは、CREATE MACROステートメントを使用して作成されます。
構文
以下は、CREATE MACROコマンドの一般的な構文です。
CREATE MACRO <macroname> [(parameter1, parameter2,...)] (
<sql statements>
);
例
次のEmployeeテーブルを検討してください。
EmployeeNo | FirstName | LastName | BirthDate |
---|---|---|---|
101 | Mike | James | 1/5/1980 |
104 | Alex | Stuart | 11/6/1984 |
102 | Robert | Williams | 3/5/1983 |
105 | Robert | James | 12/1/1984 |
103 | Peter | Paul | 4/1/1983 |
次の例では、Get_Empというマクロを作成します。 従業員テーブルからレコードを取得するための選択ステートメントが含まれています。
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