Posted on 2010-03-18 00:05
Prayer 閱讀(436)
評論(0) 編輯 收藏 引用 所屬分類:
數(shù)據(jù)庫,SQL
作者:熔巖
日期:2006-12-26
天氣:大霧
聲明:原創(chuàng)作品,未經(jīng)授權(quán),拒絕轉(zhuǎn)載!
游標的原理
一般情況下,SQL查詢結(jié)果都是多條紀錄的結(jié)果集,而高級語言一次只能處理一條紀錄,用游標機制,將多條紀錄一次一條讀取出來處理。從而把對集合的操作轉(zhuǎn)化為對單個紀錄的處理。游標使用的步驟如下:
1、說明游標。說明游標的時候并不執(zhí)行select語句。
declare <游標名> cursor for <select語句>;
2、打開游標。打開游標實際上是執(zhí)行相應的select語句,把查詢結(jié)果讀取到緩沖區(qū)中。這時候游標處于活動狀態(tài),指針指向查詢結(jié)果集的第一條紀錄。
open <游標名>;
3、推進游標指針并讀取當前紀錄。用fetch語句把游標指針向前推進一條紀錄,同時將緩沖區(qū)中的當前紀錄讀取出來送到變量中。fetch語句通常用在一個循環(huán)結(jié)構(gòu)體中,通過循環(huán)執(zhí)行fetch語句逐條取出結(jié)果集中的行進行處理。現(xiàn)在好多數(shù)據(jù)庫中,還允許任意方向任意步長易懂游標指針,而不僅僅是把游標指針向前推進一行了。
fetch <游標名> into <變量1>,<變量2>...
4、關(guān)閉游標。用close語句關(guān)閉游標,釋放結(jié)果集占用的緩沖區(qū)及其他資源。游標關(guān)閉后,就不再和原來的查詢結(jié)果集相聯(lián)系。但游標可以再次打開,與新的查詢結(jié)果相聯(lián)系。
close <游標名>;
DB2游標的循環(huán)控制
DB2下游標控制不是非常的輕松和方便的,也可以使用sqlcode,sqlstate來控制,或者用戶自己控制,DB2下SQLCODE,SQLSTATE不能直接使用,必須聲明后使用,(也就是說將系統(tǒng)的SQLCODE,SQLSTATE本地實例化一分拷貝)。一般采用用戶定義游標開關(guān)和sqlcode返回信息一起共同控制的方法.