oracle儲存過程,游標

2021-05-23 01:55:54 字數 2835 閱讀 9982

oracle儲存過程,游標

2010-07-07 13:01

create or replace procedure p_tb_task_log is --功能:插入任務到任務日誌表 v_task_start_date date;

v_task_end_date date;

v_sql_code number;

v_sql_msg varchar2(4000) := ''; --sql錯誤資訊

v_task_info ts25.tb_task_info%rowtype;

v_count number;

cursor cur_task_info is select * from ts25.tb_task_info a;

begin --該儲存過程執行開始時間和結束時間

select sysdate into v_task_start_date from dual;

select sysdate into v_task_end_date from dual;

v_sql_msg := 'step 1: 抽取資料到目的表tb_ins_info'; open cur_task_info;

v_count := 0;

loop fetch cur_task_info into v_task_info;

exit when cur_task_info %notfound;

insert into tb_task_log( c_id, --任務日誌主鍵

c_task_number, --任務號

c_fk_task_id, --任務id

c_crt_id, --任務所有者

c_ori_user_id, --原所有者

c_curr_user_id, --現所有者

c_ori_task_stat, --原任務狀態

c_curr_task_stat, --當前任務狀態

c_sori_task_stat, --原任務銷售狀態

c_scurr_task_stat, --現在任務銷售狀態

c_del, --刪除標誌

c_act_type, --

n_change_amount,

c_change_reason,

c_task_type,

c_call_type,

t_cre_date,

c_purl_level,

c_ori_task_level, --原任務狀態

c_curr_task_level, --現任務級別

c_note --備註 ) values(

sys_guid(), --任務日誌主鍵

v_task_info.c_tti_id, --任務號

v_task_info.n_tti_id, --任務id

v_task_info.c_crt_cde, --建立人 '',

--原所有者id v_task_info.c_nme, --現所有者id '',

--原任務狀態 v_task_info.c_stat, --現任務狀態 '',

--任務原銷售狀態 '',

--任務現銷售狀態 '0',

--刪除狀態 '',

-c_act_type 1.派發 2. 改派   3.** 4.執行 '0', -- 變更數量

'', --1.錯號 2-空號 3-拒防  4-無意向 5-已投保 6-無人接聽 7-佔線

, --1-電銷 2 網銷 0 - 其它 v_task_info.c_tsk_type, --1-呼入 2 -撥出 v_task_info.t_crt_date, --建立日期 '', --投保意象度 '', --原任務級別 '', --現任務級別 '' --備註 );

if (v_count = 1000) then commit;

v_count := 0;

else v_count := v_count + 1;

endif;

end loop;

close cur_task_info;

commit;

select sysdate into v_task_end_date from dual; insert into load_his_log (sys, jobname, start_date, end_date, run_date, sql_code, sql_state) values ('ts25', 'p_tb_task_log', v_task_start_date, v_task_end_date, to_char((v_task_end_date - v_task_start_date) * 86400), v_sql_code, v_sql_msg);

commit;

exception when others then v_sql_code := sqlcode;

v_sql_msg := v_sql_msg || ' ' /*|| dbms_utility.format_error_backtrace*/ || ' : ' || sqlerrm; --任務結束時間 select sysdate into v_task_end_date from dual; rollback;

insert into load_his_log (sys, jobname, start_date, end_date, run_date, sql_code, sql_state) values ('ts25', 'p_tb_ins_info', v_task_start_date, v_task_end_date, to_char((v_task_end_date - v_task_start_date) * 86400), v_sql_code, v_sql_msg);

commit;

end p_tb_task_log;

oracle 儲存過程 游標

create or replace procedure exception3 as 使用者自定義異常 e too high sal exception 宣告自定義異常 v sal employees.salary type begin select salary into v sal from em...

oracle儲存過程 游標篇

oracle 中cursor用於遍歷臨時表中的查詢結果 1 cursor 型游標 不能用於引數傳遞 create or replace procedure test is cusor 1 cursor is select std name from student where cursor 的使用方...

Oracle儲存過程返回游標

oracle儲存過程返回游標 有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 create or replace p temp procedure cur arg out sys refcursor 方法1 be...