新しいマクロの名前。完全修飾名を指定しなければ、デフォルトのデータベースまたはユーザーが使用されます。
データベース オブジェクトの命名ルールについては、<Teradata Vantage™ SQL基礎、B035-1141>を参照してください。
マクロ名は、格納先ユーザーまたはデータベース内で固有でなければなりません。
- database_name
- macro_nameの格納先データベースの名前(現在のデータベース以外の場合)。
- user_name
- macro_nameの格納先ユーザーの名前(現在のユーザー以外の場合)。
例: INSERT操作とその後のSELECT検査操作
次のリクエストでは、最初にemployee(従業員)テーブルに新しい従業員の行を挿入し、次にその情報が正しく入力されたことを確認するためにSELECTリクエストを実行するマクロを作成することを示します。
CREATE MACRO new_emp1oyee ( number INTEGER, name VARCHAR(12), dept INTEGER DEFAULT 900, position VARCHAR(12) sex CHARACTER, dob DATE FORMAT 'MMMbDDbYYYY', edlev BYTEINT ) AS (INSERT INTO employee (empno,name,deptno,jobtitle,sex,dob,edlev) VALUES (:number, :name, :dept, :position, :sex, :dob, :edlev); -- The following select verifies the insert SELECT * FROM employee WHERE empno = :number; );
-- 注釈構文を使用して、マクロ内に注釈を含めます。--の後から行末までのテキストは、実行されません。
このマクロをANSIセッション モードで実行した場合、INSERTはまだコミットされていません。これは、Teradataセッション モードでも同じです。Teradataセッション モードでは、このマクロは明示的なトランザクションの一部として実行されています。
例: INSERT操作とその後のUPDATE操作
この例では、employeeテーブルに新しい従業員のための行も挿入するマクロを作成し、SELECTリクエストではなくUPDATEリクエストを実行します。UPDATEリクエストは、:deptパラメータの値と一致する部門番号を含む行の従業員数を1つ増やして数えて、departmentテーブルを変更します。
CREATE MACRO new_employee_2 ( (number INTEGER, name VARCHAR(12), dept INTEGER DEFAULT 900, position VARCHAR(12), sex CHARACTER, dob DATE FORMAT 'MMMbDDbYYYY', edlev BYTEINT) AS (INSERT INTO employee (empno,name,deptno,jobtitle,sex,dob,edlev) VALUES (:number, :name, :dept, :position, :sex, :dob, :edlev) ; UPDATE department SET empcount=empcount+1 WHERE deptno = :dept; );
このマクロをANSIセッション モードで実行した場合、INSERT文およびUPDATEリクエストはまだコミットされていません。これは、Teradataセッション モードでも同じです。Teradataセッション モードでは、このマクロは明示的なトランザクションの一部として実行されています。
例: REPLACE MACROの使用
以下の文はマクロを置換します。
REPLACE MACRO new_employee(name VARCHAR(12) NOT NULL, street CHARACTER(30), city CHARACTER(20), number INTEGER NOT NULL, dept SMALLINT DEFAULT 999) AS (INSERT INTO employee (name, street, city, empno, deptno) VALUES (:name, :street, :city, :number, :dept); UPDATE department SET empcount = empcount + 1 WHERE deptno = :dept ;);