以下のルールが、内部データと外部データに適用されます。
UDFのアクセス | 関数での規則 |
---|---|
スカラー関数 | グローバル持続(Global and Persistent:GLOP)データ機能を使用していない場合は、関数呼び出し間でグローバル データを保持できません。詳細は、グローバル持続データを参照してください。 |
集約関数 | 部分的に集約されたデータを保持するための中間記憶域を使用できます。 |
テーブル関数 | 進行状況を追跡するスクラッチパッド メモリを使用できます。 |
関数に静的変数を含めることはできません。関数に静的定数を含めることは可能です。
CREATE FUNCTION/REPLACE FUNCTION文中でExternal Data Access句を指定することにより、関数や外部ストアド プロシージャとTeradata Databaseに対して外部のデータとの関係を定義することができます。
指定するオプションにより、次のことが決定されます。
- 外部ルーチンが外部データを読み取りまたは変更できるかどうか
- データベースの再始動後に、Teradata Databaseが関数またはプロシージャに関するリクエストの再ドライブを行なうかどうか
再ドライブ保護が有効な場合、システムでは完了したSQLリクエストに対する応答を保持し、Teradata Databaseの再始動時に未完了のリクエストを再実行します。ただし、外部ルーチンのEXTERNAL DATA ACCESS句がMODIFIES EXTERNAL DATAオプションで定義されている場合、Teradata Databaseではその関数またはプロシージャに関するリクエストを再ドライブしません。再ドライブ機能の詳細については、次を参照してください。
- Teradata Vantage™ - データベースの管理、B035-1093
- <Teradata Vantage™ - データベース ユーティリティ、B035-1102>の「RedriveProtection」および「RedriveDefaultParticipation DBS」制御フィールド
EXTERNAL DATA ACCESS句を指定しない場合のデフォルトは、NO EXTERNAL DATAです。
以下のテーブルに、EXTERNAL DATA ACCESS句のオプション、およびTeradata Databaseの外部ルーチンに対するそれらのオプションの使用方法について説明します。
オプション | 説明 |
---|---|
MODIFIES EXTERNAL DATA | ルーチンはTeradata Databaseの外部データを変更します。この場合、変更という語には、削除操作、挿入操作、および更新操作が含まれます。 データベース障害の発生後、Teradata Databaseでは、このオプションで定義されている関数または外部ストアド プロシージャに関するリクエストを再ドライブしません。
|
NO EXTERNAL DATA | ルーチンはTeradata Databaseの外部データにアクセスしません。これは、デフォルトです。 |
READS EXTERNAL DATA | ルーチンはTeradata Databaseの外部データを読み取りますが、そのデータを変更することはしません。 |
詳細は、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>の「CREATE FUNCTION (外部形式)/REPLACE FUNCTION (外部形式)」を参照してください。