SQL Server 中建立返回值為表的函式其中包括遊標的使用方法

liahtobjtosh發表於2009-09-30
SQL Server 中建立返回值為表的函式其中包括遊標的使用方法[@more@]

CREATE FUNCTION GetOneLayGroupChild_li(@paraParentId as smalldatetime) --輸入引數
returns @tChildGroup table(cGroupId int, pGroupId int) --返回引數
AS
begin

declare @tParentId int,@tChildId int
--第一步.宣告一個名為Order_Cursor的遊標.遊標為一個行集。所以下面為一個select語句
declare Order_Cursor cursor
for select pkid,parentid from [group]
--第二步.開啟遊標,檢索資料並填充遊標
open Order_Cursor
--第三步.fetch會使遊標移到下一條記錄,並將遊標返回的每個列的資料分別賦值給本地變數。
--通常會使用while來反覆從遊標中獲取記錄行,直到遊標不再返回任何行為止。用@@fetch_status
--來確定是否還能夠從遊標中獲取行
fetch next from Order_Cursor into @tChildId,@tParentId
while @@fetch_status=0
begin
if (@tParentId = @paraParentId)
begin
insert into @tChildGroup(cGroupId,pGroupId)
values(@tChildId,@tParentId)
end --if
fetch next from Order_Cursor into @tChildId,@tParentId
end --while
--關閉遊標,釋放資料。但可以使用open命令再次開啟它
close Order_Cursor
--釋放遊標,釋放相關的記憶體,並刪除遊標的定義
deallocate Order_Cursor

return
end
******

注:在函式中不允許有修改資料庫中表的語句,如Insert,update

******

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22565551/viewspace-1027535/,如需轉載,請註明出處,否則將追究法律責任。

相關文章