存儲過程cursor的使用

CREATE OR REPLACE PROCEDURE P_ADD_PROPERTY_CONTRACT AS
/**
物業合同表數據插入
2012年10月18日14:51:40
liys
**/

cursor contract IS
    select * from TMP_PROPERTY_CONTRACT;
    id              varchar2(20);           
    con_num         varchar2(50);--歸屬合同號
    fac_name        varchar2(50);--供應商
    fac_code        varchar2(50);--供應商編碼
    p_type          varchar2(5);--合同類型
    dt            varchar2(20);--所在單位
    cou_branch      varchar2(30);--縣級分公司
    s_time        date;--合同起始
    e_time          date;--合同結束
    eff        number(3);--有效月
    amount number:=0;
begin
    open contract;
    loop
           fetch  contract into id, con_num, fac_name, p_type, dt, cou_branch, s_time, e_time, eff;
           exit when contract%NOTFOUND;
          
         
           select count(1) into amount from supplier s where s.pro_name = fac_name;--判斷是否存在

           if amount>0 then
              select s.pro_code into fac_code from supplier s where s.pro_name = fac_name;--取得供應商編碼
           end if;
          
           p_type := f_get_dictionary_code('proType',p_type);--取得合同類型編碼
           dt := f_get_dictionary_code('company',dt);--取得所在單位編碼
           cou_branch := f_get_dictionary_code('county',cou_branch);--取得縣級分公司編碼
           --存入物業合同表
           insert into PROPERTY_CONTRACT(RESOURCEID,Contract_Num,Factory,Factorycode,Pro_Type,Dept,County_Branch,Start_Time,End_Time,Effectivem)
           values(SYS_GUID(), con_num, fac_name, fac_code, p_type, dt, cou_branch, s_time, e_time, eff);
           commit; 
           fac_code:='';       
     end loop;
   
     close contract;
   
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(fac_name);
    dbms_output.put_line(SQLERRM);
    ROLLBACK;
END;

發佈了38 篇原創文章 · 獲贊 7 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章