16.20 - EXECUTE (マクロ形式) - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-JPN
Language
日本語 (日本)

目的

マクロを実行します。

埋め込みSQLアプリケーションからマクロを実行するために使用する埋め込みSQL EXEC文については、<Teradata Vantage™ SQLストアド プロシージャおよび埋め込みSQL、B035-1148>を参照してください。

必要な権限

マクロに対するEXECUTE権限が必要です。マクロの作成者または所有者は、他のユーザーにEXECUTE権限を与えることができます。さらに、マクロの直接所有者(そのマクロがあるデータベース)は、マクロ内にあるリクエストの集合で指定されたオブジェクトに対し、必要な権限を持っていなければなりません。

詳細については、<Teradata Vantage™ SQLデータ定義言語 - 詳細トピック、B035-1184>と<Teradata Vantage™ - データベースの管理、B035-1093>を参照してください。

構文



構文要素

macro_name
実行するマクロの名前。
constant_expression
定数、またはパラメータ値を指定する定数の入った式。
各値は、パラメータ名がCREATE MACROリクエスト定義で指定された順序に従って、左から右の順序で列挙されます。たとえば(a, , b)のように、カンマ文字を続けて入力すればnullを指定することができます。
これは、位置パラメータ リストとも呼ばれます。
パラメータの値を指定しない場合、省略したパラメータを示すカンマが必要です。
そのパラメータには、定義されたデフォルトの値が自動的に挿入されます。
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);