1樓:匿名使用者
遊標一般用於把通過指令碼得到的結果集的內容在用於其它的sql語句中。但是遊標執行會影響指令碼執行速度,所以使用時請慎重。 在儲存過程或觸發器中使用 sql 遊標的典型過程為:
宣告sql 變數包含遊標返回的資料。為每個結果集列宣告一個變數。宣告足夠大的變數來儲存列返回的值,並宣告變數的型別為可從列資料型別隱式轉換得到的資料型別。
使用 declare cursor 語句將 sql 遊標與 select 語句相關聯。另外,declare cursor 語句還定義遊標的特性,例如遊標名稱以及遊標是隻讀還是隻進。
使用 open 語句執行 select 語句並填充遊標。
使用 fetch into 語句提取單個行,並將每列中的資料移至指定的變數中。然後,其他 sql 語句可以引用那些變數來訪問提取的資料值。sql 遊標不支援提取行塊。
使用 close 語句結束遊標的使用。關閉遊標可以釋放某些資源,例如遊標結果集及其對當前行的鎖定,但如果重新發出一個 open 語句,則該遊標結構仍可用於處理。由於遊標仍然存在,此時還不能重新使用該遊標的名稱。
deallocate 語句則完全釋放分配給遊標的資源,包括遊標名稱。釋放遊標後,必須使用 declare 語句來重新生成遊標。
2樓:匿名使用者
例子table1結構如下
id int
name varchar(50)
declare @
id int
declare @name varchar(50)
declare cursor1 cursor for --定義遊標cursor1
select * from table1 --使用遊標的物件(跟據需要填入select文)
open cursor1 --開啟遊標
fetch next from cursor1 into @id,@name --將遊標向下移1行,獲取的資料放入之前定義的變數@id,@name中
while @@fetch_status=0 --判斷是否成功獲取資料
begin
update table1 set name=name+'1'
where id=@id --進行相應處理(跟據需要填入sql文)
fetch next from cursor1 into @id,@name --將遊標向下移1行
endclose cursor1 --關閉遊標
deallocate cursor1
3樓:匿名使用者
遊標使用示例 create proc cursortest @_id int=0, @_name varchar(50)='' as --建立遊標 declare @cursor cursor --設定遊標欲操作的資料集 set @cursor=cursor for select _id,_name from users --開啟遊標 open @cursor --移動遊標指向到第一條資料,提取第一條資料存放在變數中 fetch next from @cursor into @_id,@_name --如果上一次操作成功則繼續迴圈 while(@@fetch_status=0) begin --操作提出的資料 print @_name --繼續提下一行 fetch next from @cursor into @_id,@_name end --關閉遊標 close @cursor --刪除遊標 deallocate @cursor
oracle定義儲存過程時什麼時候需要使用
oracle 的儲存過程裡沒有declare的語法,觸發器和plsql塊才是declare 如果要定義變數,後面直接跟is的 create or replace procedure c ispara number begin end 你在寫儲存過程的時候是 create or replace p n...
轉義字元什麼時候用,java中什麼時候使用轉義字元?
一般在輸出時使用,因為c語言自帶的庫函式不能直接輸出某些特殊的字元,因此需要轉義字元,所以一般在使用printf等函式時,使用轉義字元 與 java中什麼時候使用轉義字元 一,先來看看轉義字元的概念 通過 來轉變後面字母或符號的含義。意思就是改變字母本身的含義。舉一些例子 b 退格 n 換行 t 製...
定語什麼時候需要後置,英語中定語什麼時候後置?什麼時候前置那?什麼是後置定語?
定語後置小結 定語大多放在被修飾中心詞的前面,但也存在不少的後置現象,現筆者將定語後置現象總結如下 一 形容詞作後置定語的幾種情況 1.當形容詞修飾由 any every no some 和 body,one,thing 等構成的複合不定代詞時,形容詞需要後置。2.當形容詞修飾起名詞作用的 anyw...