My First PL/SQL Procedure

发表于:2007-06-07来源:作者:点击数: 标签:
create or replace procedure cuidong_insert_records(p_ny in varchar2) is qystr varchar2(260) := '大庆,吉林,辽河,冀东,江苏,胜利,华东分公司,储气库, 中原,河南,中海油,海南,华北,江汉,浙江勘探,'; qy MK_CSYB_XBSC.QY%TYPE; qy_position number(2); qy

create or replace procedure cuidong_insert_records(p_ny in varchar2) is

  qystr         varchar2(260) := '大庆,吉林,辽河,冀东,江苏,胜利,华东分公司,储气库,
                                  中原,河南,中海油,海南,华北,江汉,浙江勘探,';
  qy            MK_CSYB_XBSC.QY%TYPE;
  qy_position   number(2);
  qy_loop       number(2) := 1;
 
  dwdmstr       varchar2(300) :='YKGFGS,EKGFGS,SKGFGS,JDFWZX,XWWHZX,TBWGS,GHSHGS,GSSHGS,
                                 JSJDZX,SYJLZX,HSE,GCJL,TXGS,GSGS,JS,SD,KYGS,';
  temp_dwdmstr  varchar2(300);
  dwdm          MK_CSYB_XBSC.DWDM%TYPE;
  dwdm_position number(2);
  dwdm_loop     number(2) := 1;
 
  do_count      number(2) := 0;
begin
  loop
    do_count := do_count + 1;
    qy_position := instr(qystr,',');
    qy := substr(qystr,1,qy_position-1);
    qystr := substr(qystr,qy_position+1,length(qystr));
    DBMS_OUTPUT.PUT_LINE(do_count||'  '||qy_position||'  '||qy||'     '||p_ny);
   
    dwdm_loop := 1;
    temp_dwdmstr := dwdmstr;
    loop
      dwdm_position := instr(temp_dwdmstr,',');
      dwdm := substr(temp_dwdmstr,1,dwdm_position-1);
      temp_dwdmstr := substr(temp_dwdmstr,dwdm_position+1,length(temp_dwdmstr));
      DBMS_OUTPUT.PUT_LINE('         '||dwdm_position||'  '||dwdm||'  '||p_ny);
     
      insert into MK_CSYB_DBSC( NY, QY, LRRQ, LRRY, ZBDW, DWDM )
         values(p_ny,qy,date'2005-04-05','东部市场录入','市场开发部',dwdm);
     
      dwdm_loop := dwdm_loop + 1;
      if dwdm_loop = 18 then
        exit;
      end if;
    end loop;
   
    qy_loop := qy_loop + 1;
    if qy_loop = 16 then
      exit;
    end if;
  end loop;
 
  commit;
 exception when others then
 rollback;
end cuidong_insert_records;


原文转自:http://www.ltesting.net