目的
マクロを実行します。
埋め込みSQLアプリケーションからマクロを実行するために使用する埋め込みSQL EXEC文については、<Teradata Vantage™ SQLストアド プロシージャおよび埋め込みSQL、B035-1148>を参照してください。
必要な権限
マクロに対するEXECUTE権限が必要です。マクロの作成者または所有者は、他のユーザーにEXECUTE権限を与えることができます。さらに、マクロの直接所有者(そのマクロがあるデータベース)は、マクロ内にあるリクエストの集合で指定されたオブジェクトに対し、必要な権限を持っていなければなりません。
詳細については、<Teradata Vantage™ SQLデータ定義言語 - 詳細トピック、B035-1184>と<Teradata Vantage™ - データベースの管理、B035-1093>を参照してください。
構文
構文要素
- macro_name
- 実行するマクロの名前。
- constant_expression
- 定数、またはパラメータ値を指定する定数の入った式。
- parameter_name = constant_expression
- CREATE MACROリクエストに定義したとおりのパラメータの名前と、そのパラメータの値を指定します。
ANSI準拠
EXECUTEは、ANSI SQL:2011規格に対するTeradata拡張機能です。
推奨事項
マクロ内のデータ定義リクエストは、そのマクロが実行されるまで解釈されません。データベースのオブジェクトへの修飾されない参照は、その実行時に、マクロを実行するユーザーのデフォルトのデータベースを使用して解釈されます。
このため、データ定義文の中のオブジェクト参照は、マクロ本体の中で常に完全修飾(databasename.tablename)されている必要があります。
マクロを実行する際のルール
- カンマの数は、parameter_nameの構文規則を使用しない場合はマクロ定義と一致していなければなりません。
- 指定されたパラメータ名がないEXECUTE定数式リスト形式の値は、定数または定数が含まれる式にすることができます。この文脈では、DATE、TIME、およびUSERは、定数とみなされます。
- マクロの実行時にエラー メッセージが返された場合、それはマクロ内のSQLリクエストが原因である可能性があります。
- 呼び出し手順で使用されるパラメータの数は、定義済みのパラメータの数と同じでなければなりません。
- 例えば、2つのパラメータが定義および使用されている場合に、その両方がnullであれば、次のリクエストはすべて有効です。ただし、マクロ定義でデフォルトが指定されている場合を除きます。
EXECUTE macro_1 '(, 1); EXECUTE macro_1 (,); EXECUTE macro_1 (NULL, NULL);
ログおよびエラーへのアクセス
SQL構文解析プログラムが構文エラーまたは意味エラーを検出して報告すると、エラーが返され、リクエストのロギングは行なわれません。
例: 名前付きパラメータ リスト
このリクエストは、名前付きパラメータ リストを使用してマクロnew_emp1を実行します。<Teradata Vantage™ SQLデータ定義言語 - 構文規則および例、B035-1144>の「CREATE MACRO」を参照してください。名前付きパラメータはどんな順序で指定してもかまいません。
EXECUTE new_emp1(number=10015, dept=500, name='Omura H', sex='M', position='Programmer');
新しい従業員Omuraの行がemployeeテーブルに挿入されます。
例: 位置パラメータ リスト
この例は、位置パラメータ リストを使用してマクロnew_emp2を実行します。<Teradata Vantage™ SQLデータ定義言語 - 構文規則および例、B035-1144>の「CREATE MACRO」を参照してください。deptパラメータには値が指定されていないので、マクロで定義されたデフォルト値が設定されます。位置の並びの整合性を保つために、deptの位置にはカンマが挿入されます。
EXECUTE new_emp2 (10021, 'Smith T', , 'Manager', 'F', 'May 8, 1959', 16);
例: 自動的に挿入される値
次のリクエストが処理されるときには、deptパラメータのデフォルト値(900)が自動的に挿入されます。新しい従業員Smithの行がemployeeテーブルに追加され、employeeテーブルは、emp_count列の部門900の値を増やすことで更新されます。このリクエストは、new_hireというマクロを実行するために、名前付きパラメータ リストを使用します。DOH (Date of Hire、入社年月日)列の値はDATE定数の入った式です。
EXECUTE new_hire (fl_name='Toby Smith', title='Programmer', doh=DATE -1);
例: マクロ実行時の引数としてのSQL UDFの呼び出し
次に示す例では、マクロvalue_expressionの引数として、SQL UDFのm1を呼び出します。
EXECUTE m1 (test.value_expression(1,2), 2, 3);