ALLOCATE CURSOR

カーソルを定義し、それを結果セット・ロケータの変数に関連付けます。
制限事項:このトピックは、Windows 環境 (ローカル開発) にのみ適用されます。

構文:

>>-EXEC SQL--ALLOCATE cursor_name FOR RESULT SET :rs_locator_variable->
>-----END-EXEC-----<>

パラメータ:

cursor_name 以前宣言され開いたカーソル。
:rs_locator_variable アプリケーション・プログラムで宣言された結果セット・ロケータのホスト変数。

コメント:

弊社の Enterprise Developer for Visual Studio 製品を使用して、SQL CLR ストアド・プロシージャを作成できます。

結果セットを返し DBMAN=ODBC と DIALECT=MAINFRAME によってコンパイルされる SQL CLR ストアド・プロシージャを呼び出すクライアント・アプリケーションでサポートされます。

例:

  working-storage section.
       exec sql include sqlca end-exec.
       01  mfsqlmessagetext    pic x(200).
       01  hv-country  pic n(15) national.
       01  CustomerID  pic n(5) national.
       01  Company     pic n(40) national.
       01  City        pic n(15) national.
       01  CustomerID2 pic n(5) national.
       01  Company2    pic n(40) national.
       01  City2       pic n(15) national.
       01  rsl         sql type result-set-locator varying.
       01  rs2         sql type result-set-locator varying.
       01  rs3         sql type result-set-locator varying.
       procedure division.
           exec sql connect to Northwind end-exec

           move N"UK" to hv-country   
  
           *> Test DB2 result set locators
           *> This proc opens 3 cursors. closes 2 and re-opens on
           *> So should return 2 result sets
           exec sql call TestProc1(:hv-country) end-exec
           
           exec sql
               associate locators (:rsl, :rs2, :rs3) 
               with procedure TestProc1
           end-exec
           
           exec sql
               allocate c1 cursor 
               for result set :rsl
           end-exec
           if sqlcode not = 0
               display "Open 1st locator failed"
           end-if
       
           exec sql
               allocate c2 cursor 
               for result set :rs2
           end-exec
           if sqlcode not = 0
               display "Open 2nd locator failed"
           end-if
       
           exec sql
               allocate c3 cursor 
               for result set :rs3
           end-exec
           if sqlcode = 0
               display "FAIL: Open 3rd locator succeeded"
           end-if