SQL DATA ACCESS句は、プロシージャがSQL文を発行できるかどうか、また発行できる場合はどのタイプを発行できるのかを示します。「SQL文」を含む外部プロシージャには、実際には標準SQL文自体が含まれるのではなく、文のCLIv2、ODBC、またはJDBCの呼び出しが含まれています。
SQL DATA ACCESS句とLANGUAGE句は、任意の順序で指定できます。
外部プロシージャからのSQL呼出しの実行がサポートされることにより、以下のすべてが実行可能です。
- 外部プロシージャを作成し、クライアント アプリケーションがCLIv2呼出しを実行してSQLリクエストを実行するのと同じ方法でCLIv2またはJDBCを使用してSQLリクエストを実行できます。
- CREATE PROCEDURE (外部形式)およびREPLACE PROCEDURE (外部形式)文を使用して、外部プロシージャから作成されたSQL呼び出しの特定の機能を定義するDATA ACCESS句を指定できます。
例えば、CLIv2外部プロシージャが、DATA ACCESS句にMODIFIES SQL DATAオプションを指定している場合、システムはプロシージャがAPIとリンクされる必要があることは認識していますが、プロシージャがどのAPIとリンクされる必要があるのかは認識していません。この状態を処理するには、EXTERNAL NAME句が明示的に、プロシージャがCLIv2ライブラリとリンクされることを指定する必要があります。
JDBCを使用する外部プロシージャの場合、EXTERNAL NAME句でリンク先のパッケージを明示的に指定することは、有効ではありません。これらのプロシージャの場合、CREATE PROCEDUREまたはREPLACE PROCEDUREリクエストに指定するLANGUAGE句とSQL DATA ACCESS句の組合わせに基づいて決定されます。
この情報を認識すると、システムは適切なライブラリの検索、そのライブラリとのリンク付け、実行時の適切な環境変数の設定を行ないます。
既存のUDFライブラリとのリンクおよび実行の衝突を避けるため、データベースは、CLIv2ベースまたはJavaベースの外部プロシージャを含む各データベースの標準UDFライブラリとは別に、動的ライブラリを維持します。