SQL 游標 乙個簡單的例子

2021-06-07 21:10:00 字數 1892 閱讀 7485

一、游標的作用:

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...