カーソルからデータを取り出します。
Synopsis
FETCH cursor-name [INTO host-variable-list]
引数
cursor-name カーソルの名前。識別子です。
INTO host-variable-list オプション — フェッチの列からローカル変数にデータをコピーします。host-variable-list には、1 つのホスト変数またはコンマで区切られた複数のホスト変数のリストを指定します。この変数がカーソルに関連付けられたデータの格納先になります。INTO 節は、オプションです。指定されていない場合は、FETCH 文はカーソルのみを配置します。
概要
埋め込み SQL アプリケーション内で、FETCH 文はカーソルからデータを取り出します。操作の必須順序は、DECLAREOPENFETCHCLOSE です。
SQL 文として埋め込み SQL からだけサポートされています。同様の操作は、ODBC でも ODBC API を使用してサポートされます。
INTO 節は、DECLARE 文の節、FETCH 文の節、またはその両方として指定できます。INTO 節は、ローカル変数内に配置されるフェッチの列からデータを配置します。リスト内の各変数は左から右に、カーソル結果セット内で対応する列に関連しています。各変数のデータ型は、結果セット列に対応するデータ型の暗黙の変換に一致するかサポートされる必要があります。変数の数は、カーソル選択リスト内の列数と一致しなければなりません。
FETCH オペレーションは %ROWCOUNT ローカル変数を、取り出される行の数に設定します。
以下の埋め込み SQL の例は、EmpCursor という名前のカーソルからデータを取り出す FETCH 文を示しています。INTO 節は DECLARE 文に指定されています。
   SET name="LastName,FirstName",state="##"
   &sql(DECLARE EmpCursor CURSOR FOR SELECT Name,Home_State
       INTO :name,:state FROM Sample.Person)
   IF SQLCODE'=0 {
     WRITE !,"DECLARE Error code ",SQLCODE
     QUIT }
   ELSE {
     WRITE !,"BEFORE: Name=",name," State=",state }
   &sql(OPEN EmpCursor)
   FOR { &sql(FETCH EmpCursor)
        QUIT:SQLCODE  
        WRITE !,"DURING: Name=",name," State=",state }
   &sql(CLOSE EmpCursor)
   WRITE !,"AFTER: Name=",name," State=",state
以下の埋め込み SQL の例は、EmpCursor という名前のカーソルからデータを取り出す FETCH 文を示しています。INTO 節は、FETCH 文の一部として指定されています。
   SET name="LastName,FirstName",state="##"
   &sql(DECLARE EmpCursor CURSOR FOR SELECT Name, Home_State
       FROM Sample.Person)
   IF SQLCODE'=0 {
     WRITE !,"DECLARE Error code ",SQLCODE
     QUIT }
   ELSE {
     WRITE !,"BEFORE: Name=",name," State=",state }
   &sql(OPEN EmpCursor)
   FOR { &sql(FETCH EmpCursor INTO :name,:state)
        QUIT:SQLCODE  
        WRITE !,"DURING: Name=",name," State=",state }
   &sql(CLOSE EmpCursor)
   WRITE !,"AFTER: Name=",name," State=",state
以下の埋め込み SQL の例は、対応する DECLAREINTO 節をオーバーライドする INTO 節を持つ FETCH 文を示しています。
   SET name="LastName,FirstName",state="##"
   &sql(DECLARE EmpCursor CURSOR FOR SELECT Name, Home_State
       INTO :name,:state FROM Sample.Person)
   IF SQLCODE'=0 {
     WRITE !,"DECLARE Error code ",SQLCODE
     QUIT }
   ELSE {
     WRITE !,"BEFORE: Name=",name," State=",state }
   &sql(OPEN EmpCursor)
   FOR { &sql(FETCH EmpCursor INTO :n1,:s1)
        QUIT:SQLCODE  
        WRITE !,"DURING DecVars: Name=",name," State=",state
        WRITE !,"DURING FetchVars: Name=",n1," State=",s1 }
   &sql(CLOSE EmpCursor)
   WRITE !,"AFTER DecVars: Name=",name," State=",state
   WRITE !,"AFTER FetchVars: Name=",n1," State=",s1
関連項目
CLOSE カーソル DECLARE OPEN