DBMS ベンダー固有のストアド プロシージャでは、次の操作を実行できます。
結果セットを返さないストアド プロシージャを呼び出すには、CALL 埋め込み SQL 文を使用します。この文の使用に関する詳細は、CALL のトピックを参照してください。
1 つ以上の結果セットを返すストアド プロシージャは、DECLARE CURSOR 文を使用して宣言する必要があります。次に例を示します。
EXEC SQL
DECLARE cursorName CURSOR FOR storedProcedureCallStatement
END-EXEC
次に、OPEN 文を使用してカーソルを開くその他のタイプのカーソルと同じように、ストアド プロシージャを呼び出し、その後に FETCH 文を続けて結果セットの行をフェッチします。
EXEC SQL
GET NEXT RESULT SET FOR cursorName
END-EXEC
GET NEXT RESULT SET 文から 0 の SQLCODE が返された場合、使用可能な他の結果セットがあるため、GET NEXT RESULT SET をさらに発行してそれらを取得できます。ただし、GET NEXT RESULT SET で 100 の SQLCODE が返された場合、使用可能な結果セットはもうありません。
FOR :hvar
ここで、:hvar は整数のホスト変数で、渡される行の数が格納されます。
JDBC で OpenESQL を使用する場合、次のことが該当します。
この失敗は、COBOL コンパイラが (可能な場合) 01 レベル フィールドとその下位の 01 レベル "FILLER" フィールドを JVM タイプとしてコンパイルするために起こります。
正常なコンパイルを保証するには、オブジェクト タイプ (string、binary-long、BigDecimal など) ではなく従来の COBOL データ型 (PIC X(n)、COMP-3 など) をホスト変数に使用して、次のいずれかを行います。
このシナリオは、CALL 文を使用して呼び出されたストアド プロシージャには適用されません。