當執行有輸入參數並且返回結果集的格式在編譯時可以確定的SQL語句時可以使用第三種格式。這種格式語法比較複雜,但要比前面兩種功能強,可以返回結果集。在返回結果時由於不知道滿足過濾條件的記錄到底有多少條,因此第三種格式通常採用游標的形式。


1語法
  DECLARE cursor DYNAMIC CURSOR FOR DynamicStagingArea;
  PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject};
  OPEN DYNAMIC cursor {USING Parameterlist};
  FETCH cursor INTO VariableList;
  CLOSE cursor;

 

2應用實例
  將表base中的code欄位中間兩位為”01”的所有記錄讀取出來並分別進行相應處理。
  STRING lsSQL,lsCode,lsName,lsFilter
  LsFilter=”01”
  LsSQL=”SELECT code,name FROM base WHERE substring(code,3,2)=?”
  DECLARE cursor_base DYNAMIC CURSOR FOR SQLSA;
  PREPARE SQLSA FROM:lsSQL;
  OPEN DYNAMIC cursor_base USING:lsFilter;
  FETCH cursor_base INTO:lsCode,:lsName;
  DO WHILE SQLCA.SQLCODE=0
   .
   ∥對滿足條件的記錄根據要求分別進行處理
   .
   FETCH cursor_base INTO:lsCode,:lsName;
  LOOP
  CLOSE cursor_base;

  其中cursor是用戶所定義的游標的名字。
  


arrow
arrow
    全站熱搜

    PB 發表在 痞客邦 留言(0) 人氣()