首頁  >  文章  >  php教程  >  SQL 遊標 一個簡單的例子

SQL 遊標 一個簡單的例子

高洛峰
高洛峰原創
2016-12-14 11:28:161372瀏覽

一、遊標的作用:

        Select時,返回的是一個結果集,若需要為結果集返回的過程中,讀取到一行資料。需要對此行資料進行處理,例如按讀取到的資料作為查詢條件傳回查詢結果集等等,應用程式都需要用到遊標。

      遊標可允許 使用者 查詢下一行、上一行、第一行或最後一行,並對這些讀取到的行進行處理。

二、遊標舉例

CREATE FUNCTION GetMRPlnFullBom  --建立一函數,根據單據電鍵查詢單據中每行,並對每行資料進行處理。   

(  

         @DocEntry int  

)  

(  

    DocEntry int,  

    LineNum int,  🎠   LineNum int,   ItmID nvarchar(20),   

    ItmName nvarchar(100),  

    LineType char(1), 19,9),  

    BomLevel int,  

    ParentEntry int,  

 int,  

    TopItmID nvarchar(20) ,  

           

         BaseType int

)  

AS  

BEGIN  

Declare  @ItmID varchar(50)¢

--聲明一遊標,聲明遊標時 XXX前不能加@,例如下面的MRPlnA_ItmID ,格式是DECLARE XXX CURSOR FOR        

DECLARE MRPlnA_ItmID CURSORQFOR jType FROM MRPlnA  Where DocEntry = @DocEntry --語句要在DECLARE XXX CURSOR FOR與OPEN XXX之間。

Open MRPlnA_ItmID      --開啟遊標   

FETCH NEXT FROM MRPln XXX INTO ... 更新遊標指定記錄即換行,並將Select出來的數據,存入臨時變數中。  FETCH格式上除了NEXT還有PRIOR、FRIST、LAST。分別是上一行、第一行及最後一行。   

WHILE @@FETCH_STATUS = 0 --@@FETCH_STATUS全域變量,用於查詢FETCH最後一次狀態,控制循環。當讀取完時是0,讀取失敗是-1,記錄被刪除是-2。

BEGIN  

Insert Into @TAB  

Select DocEntry,LineNum,LineNumLevel,ItmID,IName,LineType,Qty* opItmID , @DocEntry SourceEntry ,@LineNum BaseLineNum ,@ ObjType BaseType   

From GetBomFullItems(@ItmID, 'V 1.0', GetDate()) TD --GetBomFULLItmes是另一個查詢函數。   

FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID  , @Qty ,@LineNum , @ObjType -- Select移到下一行。   

END  

CLOSE MRPlnA_ItmID       --關閉遊標   

END  

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn