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...