oracle 儲存過程之游標(loop)使用

2022-05-09 08:00:11 字數 1106 閱讀 7941

declare --宣告兩個變數

v_id varchar2(50);

v_int number;

cursor yb is

select a.id from t_d5_punishment a where a.removed = '0';

begin

v_int := 1;           --變數賦值

open yb;             --開啟游標

loop --開始標記

fetch yb into v_id;         --游標賦值 當然這邊可以賦值多個值

(譬如:fetch yb into v_id , v_name;)

exit when yb%notfound;             --游標一條一條地遍歷記錄,當找不到記錄時退出

begin

update t_d5_punishment a set a.cardtype= case a.cardtype when '02' then '01' when '03' then '02' when '04' then '05' else '' end             --實際操作

where a.id=v_id;

exception                                          --異常丟擲

when others then

dbms_output.put_line(v_id);

end;

v_int := v_int+1;

if(v_int >=500) then

commit;                                 --500條提交一次 分單系統壓力,提高上傳的效率

v_int :=0;

end if;

end loop;                    --結束標記

commit;

close yb;                   --關閉游標

end;                     --結束

/ --這個斜槓用處很大,比如好多條儲存過程的話,可以寫在後面一起執行。

儲存過程之游標

游標 指標 1 select。into 注意 into 關鍵字後的變數要求先宣告 只能出現在儲存過程和觸發器,不能單獨使用 字段 數量 型別 要和變數一致 只能針對一行 返回標量值 搜尋的結果集為多條,移動指標 步驟 建立游標 開啟游標 獲取記錄 關閉游標 語法 declare 游標名稱 curso...

mysql儲存過程之游標篇

本篇主要參考mysql手冊 游標必須在宣告處理程式之前被宣告,並且變數和條件必須在宣告游標或處理程式之前被宣告。宣告游標 declare cursor name cursor for select statement 這個語句宣告乙個游標。也可以在子程式中定義多個游標,但是乙個塊中的每乙個游標必須有...

mysql儲存過程之游標使用(六)

需求 修改id為偶數的記錄分數 delimiter create procedure test cur 1 begin 定義開關 declare stopflag int default 0 定義資料存放的變數 declare my id varchar 255 default 定義游標變數 dec...