My First PL/SQL Procedure

发表于:2007-07-02来源:作者:点击数: 标签:
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);

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