OpenESQL ストアド プロシージャでは、次の処理を実行できます。
結果セットを返さないストアド プロシージャを呼び出すには、CALL 埋め込み SQL 文または EXECSP 埋め込み SQL 文 (Micro Focus Embedded SQL Toolkit for Microsoft SQL Server との互換性を確保する場合) を使用します。これらの文の使用方法の詳細は、「CALL」と「EXECSP」の各トピックを参照してください。
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 が返された場合、使用可能な結果セットはもうありません。
ストアド プロシージャで 1 つ以上のカーソルを宣言し、宣言した各カーソルから複数の結果セットが返されるよう複数の SELECT 文を定義内に含めることで、呼び出し側のプログラムに複数の結果セットを返します。
EXEC SQL
DECLARE C1 CURSOR
FOR
SELECT CUSTID FROM COMPANY;
SELECT CUSTNAME FROM COMPANY;
END-EXEC
EXEC SQL OPEN C1 END-EXEC
EXEC SQL
DECLARE C2 CURSOR
FOR
SELECT COMPNAME FROM COMPANY;
END-EXEC
EXEC SQL OPEN C2 END-EXEC
この例には C1 と C2 という 2 つのカーソルがあり、C1 が 2 つの結果セットを、C2 が 1 つの結果セットを返します。そのため、これらのカーソルによって合計 3 つの結果セットが呼び出し側アプリケーションに返されます。