使用上の注意
アプリケーションがプロシージャを構成する文をデータベースに送信すると、それらの文はデータベースでコンパイルされ、以後の実行用に保存されます。 プロシージャを定義するアプリケーションはSQL文を送信して、プロシージャの作成(CREATE PROCEDURE)または置き換え(REPLACE PROCEDURE)を実行する必要があります。
データベースで外部ストアド プロシージャがサポートされていない場合、SQLは拒否されます(SQLがサポートされていることを確認する機能は提供されていません)。
サポートされる場合は、ElicitFile応答パーセルが返され、その結果、アプリケーションはCLIv2 ContinueRequest関数を使用してプロシージャの文をデータベースに送信します。
すべての文が送信されると、プロシージャがコンパイルされ、データベースに保存されます。 コンパイルに使用される文字セットは、プロシージャの作成または置き換えで使用した文字セットです。
プロシージャの使用
すでにコンパイルされ保存されたプロシージャを呼び出すためには、SQL CALL文をデータベースに送信します。 呼び出しが行なわれると、SQL READS SQL DATAまたはWRITES SQL DATA句で定義されたプロシージャは、自らCLIv2を呼び出して、接続を確立し、SQLリクエストを送信できます。 このときの接続は、標準データベース ログオン文字列を供給する、新規接続(DBCAREA Use-default-connの値が「N」)でもよいし、またプロシージャの呼び出しに使用したセッションを使用することもできます(DBCAREA Use-default-connが「Y」)。
後者はデフォルト接続と呼ばれるもので、いくつかの制限があります。 具体的にいうと、プロシージャの実行に使用される文字セットは、CALLの送信で使用された文字セットではなく、プロシージャの作成または置き換え時に設定された文字セットとなります。 この文字セットを確認する機能は提供されていません。
- Date-form
- Language-conformance
- Statement-status
- Transaction-semantics
- 2PC
これらのオプションに対するアプリケーションの設定を確認する機能は提供されていません。 また、デフォルト接続は切断できません。
プロシージャは、DBCAREA Return-result-toオプションを使用して、SQLストアド プロシージャのSQL PROCEDURE文のWITH RETURN句で提供されるものと同じ情報をCLIv2に提供できます。 具体的には、SQLリクエストの結果を要求者、プロシージャの呼び出し側、アプリケーションのいずれに返すかという情報です。 呼び出し側またはアプリケーションに結果を伝播する場合は、ResultSet応答パーセルが先行します。
言語 | 変数名 |
---|---|
COBOL: | SP-RETURN-RESULT |
C: | SP_return_result |
ルーチン | 動作 |
---|---|
DBCHINI: | 書き込み |
DBCHCL: | 読み取り(RSUP;IRQ) |
使用者 | 動作 |
---|---|
アプリケーション プログラム | 書き込み |
このDBCAREAフィールドに設定できる値は、0~5です。