原文路徑(
cursor是游標,常用於指令碼處理。
這裡主要介紹自己常用的方法,同時也會把網上的一般格式進行解釋。
declare 游標名稱 cursor for select 欄位1,欄位2,欄位3,... from 表名 where ...
open 游標名稱
fetch next from 游標名稱 into 變數名1,變數名2,變數名3,...
while @@fetch_status=0
begin
sql語句執行過程... ...
fetch next from 游標名稱 into 變數名1,變數名2,變數名3,...
endclose 游標名稱
deallocate 游標名稱 (刪除游標)
一般格式sql舉例如下:
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行 相當於for(int i;i
end
close cursor1 --關閉游標
deallocate cursor1
其中while迴圈的判斷條件:
@@fetch_status =0 fetch 語句成功
@@fetch_status =-1 fetch 語句失敗或此行不在結果集中
@@fetch_status =-2 被提取的行不存在
declare 游標名稱 cursor for select * from 表名 where ...
begin
dbms_output.enable(buffer_size=>null);
for 變數名 in 游標名稱 loop
sql語句執行過程... ... 獲取游標裡的值 直接用 變數名.欄位名
end loop;
close 游標名稱
deallocate 游標名稱 (刪除游標)
案例: 紅色部分是對於第二點常用格式上的新增,使得可以在迴圈中巢狀迴圈
declare
type daynamic_cursor_type is ref cursor; --黃色部分自定義
cursor bscl_mc_cur is
select d.bscl_mc
from db_ywbz.ecm_bscl_common_content_data@db_ywbz_sc_old d
where d.bscl_mc is not null
group by d.bscl_mc;
cur_zj_rows daynamic_cursor_type; --定義游標
v_sql varchar2(500);
v_zj varchar2(10);
begin
dbms_output.enable(buffer_size=>null);
for v_bscl_mc_cur in bscl_mc_cur loop
v_sql := 'select zj,zj_dm from ecm_bscl_common_content_data d where d.bscl_mc = '||chr(39)||v_bscl_mc_cur.bscl_mc||chr(39); --引號,記得加
dbms_output.put_line('**********'||v_bscl_mc_cur.bscl_mc);
open cur_zj_rows for v_sql;
loop
fetch cur_zj_rows into v_zj; --獲取值
exit when cur_zj_rows%notfound; --判斷是否存在值
dbms_output.put_line(v_zj); --操作
end loop;
end loop;
end;
sql 中CURSOR 的使用
cursor是游標,常用於指令碼處理。這裡主要介紹自己常用的方法,同時也會把網上的一般格式進行解釋。declare 游標名稱 cursor for select 欄位1,欄位2,欄位3,from 表名 where open 游標名稱 fetch next from 游標名稱 into 變數名1,變數...
Android中cursor類的使用
android中從資料庫中查出來的資料一般都存在cursor中即 cursor mcursor msqlitedatabase.query select form table null 說白了就是乙個資料集合,具體的說就是每行資料集合,下面是api中對cursor的解釋 關於 cursor,1,cu...
Android中cursor類的使用
android中從資料庫中查出來的資料一般都存在cursor中即 cursor mcursor msqlitedatabase.query select form table null 說白了就是乙個資料集合,具體的說就是每行資料集合,下面是api中對cursor的解釋 關於 cursor,1,cu...