ASSOCIATE LOCATORS

SQL CLR ストアド プロシージャが返す結果セットごとに、結果セット ロケーターの値を取得します。

構文:

              .-RESULT SET-.                 
>>-ASSOCIATE--+------------+--+-LOCATORS--+---------------------->
                              '-LOCATOR--'   

      .-,-------------------.      
      V                     |      
>--(----rs-locator-variable-+--)-------------------------------->

>--WITH PROCEDURE--+-procedure-name-+--------------------------><
                   '-hvar-----------'   

パラメーター:

rs_locator_variable アプリケーション プログラムで宣言された結果セット ロケーターのホスト変数
procedure-name SQL CLR ストアド プロシージャの名前
hvar SQL CLR ストアド プロシージャの名前を含むホスト変数

説明:

結果セットを返し DBMAN=ODBC および DIALECT=MAINFRAME または DBMAN=ADO および 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