關於游標巢狀

2021-10-09 12:58:27 字數 677 閱讀 7257

游標巢狀使用時,@@fetch_status的值有時會從內部游標影響到外部的游標,使外部的游標只迴圈一次。這時要檢查游標的使用方法。要先移動游標,然後就開始判斷,為真進行進行業務邏輯處理,然後移動游標,這樣就沒問題了。示例如下:

declare   外層游標

open 外層游標

fetch next ...提取外層游標行

while @@fetch_status = 0

begin

declare 內層游標

open 內層游標

fetch next ...提取內層游標行

while @@fetch_status = 0

begin

.....業務邏輯處理處理內層游標

fetch next ....內層游標向下移動一行

endclose 內層游標

deallocate 內層游標

fetch next ....內層游標處理結束後,外層游標才繼續向下移動一行

end

close 外層游標

deallocate 外層游標

也就是說,外層游標每移動一行,就要重複進行內層游標定義,開啟,迴圈,關閉,釋放等操作,然後才能再向下移動行。這樣就不會有影響。

巢狀游標的原理

fetch status 屬於任何游標的,只要任何乙個游標被提取了,這個提取成功與否的狀態就會儲存到 fetch status中.巢狀游標的原理類似這樣 declare 外層游標 open 外層游標 fetch next 提取外層游標行 while fetch status 0 begin decl...

mysql 游標巢狀使用

解決方案 從a表取乙個欄位的值和從b表取乙個欄位的值一一組合作為插入資料來源。drop procedure if exists test team user create procedure test team user begin declare done int default 0 declar...

sql 雙層游標巢狀

建立儲存資料臨時表 create table temp dep temp depid varchar 50 temp depname varchar 50 temp name varchar 5000 向臨時表中插入前三列資料 insert into temp dep temp depid,temp...