一、游標的作用:
select時,返回的是乙個結果集,若需要為結果集返回的過程中,讀取到一行資料。需要對此行資料進行處理,比如按讀取到的資料作為查詢條件返回乙個查詢結果集等等,應用都需要用到游標。
二、游標舉例
create function getmrplnfullbom --建立一函式,根據單據電鍵查詢單據中每行,並對每行資料進行處理。
( @docentry int
)returns @tab table -- 將最終查詢的結果集定義臨時表,返回。
( docentry int,
linenum int,
linenumlevel nvarchar(100),
itmid nvarchar(20),
itmname nvarchar(100),
linetype char(1),
qty numeric(19,9),
bomlevel int,
parententry int,
parentitmid nvarchar(20),
topentry int,
topitmid nvarchar(20) ,
baseentry int ,
baselinenum int ,
basetype int)as
begin
declare @itmid varchar(50) , @qty int ,@linenum int ,@objtype int --宣告區域性變數
--宣告一游標,宣告游標時 ***前不能加@,比如下面的mrplna_itmid ,格式是declare *** cursor for
declare mrplna_itmid cursor for
select itmid , qty ,linenum , objtype from mrplna where docentry = @docentry --語句要在declare *** cursor for與open ***之間。
open mrplna_itmid --開啟游標
fetch next from mrplna_itmid into @itmid , @qty ,@linenum , @objtype --fetch next from *** 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,itmname,linetype,qty*@qty,bomlevel,parententry,
parentitmid,topentry,topitmid , @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移到下一行。
endclose mrplna_itmid --關閉游標
deallocate mrplna_itmid --釋放游標
return
end
SQL游標使用簡單例子
select from dbo.bank 1 張三 10001 2 李四 10001 3 王五 10001 4 小兒 10001 declare bankid intdeclare username varchar 50 declare rmbnum varchar 50 declare curso...
乙個sql的例子
select dbo.userinfo.username,dbo.userinfo.usertruename,dbo.userinfo.useremail,dbo.userinfo.usermobile,dbo.userinfo.usertelephone,dbo.userinfo.usercar,...
乙個游標簡單示例
下面是乙個游標的例項,方便初學者學習,也可以防止自己忘記 if exists select 1 from sysobjects where name hehe drop procedure hehe goset ansi nulls on set quoted identifier on gocre...