HCOSS SQL CLR ストアド プロシージャおよび結果セットの操作

制限事項:本トピックは Windows 環境にのみ該当します。

HCOSS SQL CLR ストアド プロシージャは、次の操作を実行できます。

注:Visual COBOL for Visual Studio 製品を使用して HCOSS SQL CLR ストアド プロシージャを作成できます。また、SQL CLR ストアド プロシージャを呼び出すアプリケーションは、DBMAN=ODBC でコンパイルする必要があります。

結果セットを返さない SQL CLR ストアド プロシージャの呼び出し

結果セットを返さない HCOSS ストアド プロシージャを呼び出すには、CALL 埋め込み SQL 文を使用します。CALL 文の使用に関する詳細は、CALL のトピックを参照してください。

SQL CLR ストアド プロシージャからの結果セットの受信

ストアド プロシージャが 1 つ以上の結果セットを返す場合、一連の埋め込み SQL 文を使用して受信する必要があります。まず、CALL 文を使用してストアド プロシージャを呼び出します。次に、ASSOCIATE LOCATORS 文を使用して適切な数の結果セットを定義します。その後、定義した結果セットに対して 1 つの ALLOCATE CURSOR 文を発行します。たとえば、次のコードでは、2 つの結果セット ロケーターを割り当てられた 2 つのカーソルに関連付けることで、2 つの結果セットを返します。つまり、結果セットをそれらのカーソルにマッピングします。

     EXEC SQL CALL MYPROC(:hv-country) 
     END-EXEC
     EXEC SQL
        ASSOCIATE LOCATORS (:RS1,:RS2) WITH PROCEDURE MYPROC
     END-EXEC 
     EXEC SQL
         ALLOCATE C1 CURSOR FOR RESULT SET :RS1
     END-EXEC
     EXEC SQL
         ALLOCATE C2 CURSOR FOR RESULT SET :RS2
     END-EXEC

この時点で、その他の SQL カーソルと同様に FETCH 文を使用して各結果セットをフェッチします。また、同時にこれらのカーソルへのアクセスをインターリーブすることもできます。たとえば、上記のシナリオを使用して、C1 からフェッチしてからすぐに C2 からフェッチできます。

最後に、カーソル処理が済んだら、CLOSE 文を使用して結果セット処理を終了します。

ストアド プロシージャの結果セットの返し

SQL(DIALECT=MAINFRAME) でコンパイルされた COBOL ストアド プロシージャにより、メインフレーム動作がエミュレートされ、実際の結果セットではなく結果セット ロケーターが返されます。COBOL および PL/I 以外の言語で記述されたアプリケーションを呼び出す場合と、SQL(DIALECT=MAINFRAME) でコンパイルされていない COBOL アプリケーションおよび PL/I アプリケーションの場合、SQL(OPTION=NORSLOCATORS) を使用してストアド プロシージャをビルドします。その後、結果セットが通常の SQL Server 結果セットとして返されます。