oralce 動態游標和靜態游標結合

2021-09-25 06:01:48 字數 2373 閱讀 8617

create or replace procedure sgcm_work_plan_history is

type ref_cursor_type is ref cursor;  --定義乙個動態游標

usrs ref_cursor_type;

str_classify_id varchar2(250); ---------類別id

v_sql varchar2(1000);

device_id varchar2(250);

device_name varchar2(250);

center_substation_id varchar2(250);

center_name varchar2(250);

substation_id varchar2(250);

substation_name varchar2(250);

p_msg varchar2(250);

--獲取裝置類別編碼

cursor cur_device_type_en is select t.dictionary_key,t.dictionary_value from sgcm_dictionary t where dictionary_type = 'key_decision_lib_device_type';

--活裝置類別編號

cursor cur_device_type_num is select t.dictionary_key,t.dictionary_value from sgcm_dictionary t where t.dictionary_type = 'main_device_type';

begin

-- 清空關鍵裝置指標表資料

delete from ecms_kd_target_data;

commit;

for cur_row_en in cur_device_type_en loop

for cur_row_num in cur_device_type_num loop

-- 拆分執行編號

if cur_row_en.dictionary_value = cur_row_num.dictionary_value  then

str_classify_id := cur_row_num.dictionary_key;

v_sql := 'select dd.device_id,dd.device_name,dd.center_substation_id,dd.center_name,dd.substation_id,dd.substation_name from sgcm_pub_main_device dd where  classify_id in ('||str_classify_id||')';

open usrs for v_sql;

loop

exit when usrs%notfound;  --迴圈條件

fetch usrs into device_id,device_name,center_substation_id,center_name,substation_id,substation_name;

insert into ecms_kd_target_data(uuid,device_id,device_name,center_substation_id,center_substation_name,substation_id,substation_name,device_type)

values(sys_guid(),device_id,device_name,center_substation_id,center_name,substation_id,substation_name,cur_row_en.dictionary_key);

commit;

end loop;

close usrs;

end if;

end loop;

end loop;

exception

when others then

--回滾

rollback;

--列印異常訊息

p_msg := sqlcode || sqlerrm;

dbms_output.put_line(p_msg);

--儲存過程執行失敗,記錄失敗資訊

insert into ecms_proc_log

(logid, proc_name, des, exetime, issuccess, endtime)

values

(sys_guid(),

'ecms_kd_target_data',

'插入關鍵裝置指標資料失敗,異常資訊:' || p_msg,

sysdate,

-1,sysdate);

commit;

end;

oralce游標案例

要求把 高於1000的產地為杭州和中國的家電和電子產品放到表productinf tmp,並轉換商品型別編號為商品型別,商品 高於2000下調5 create table scott productinfo productid varchar2 10 productname varchar2 20 ...

oracle04 靜態游標,動態游標

3 使用帶引數的靜態游標查詢某工資區間的員工資訊 最高工資,最低工資是引數 declare va emp emp rowtype va min emp.sal type 最低工資 va max emp.sal type 最高工資 cursor va empcur va mingsal emp.sal...

認識靜態與動態游標

背景 靜態 static 游標建立將由該游標使用的資料的臨時複本。對游標的所有請求都從 tempdb 中的這一臨時表中得到應答 因此,在對該游標進行提取操作時返回的資料中不反映對基表所做的修改,並且該游標不允許修改 動態 dynamic 游標會反映在滾動游標時對結果集內的各行所做的所有資料更改。行的...