create or replace procedure newdata(tmp1 varchar2,tmp2 varchar2,tmp3 varchar2)
 AS
  V_TMP1 NUMBER;
  V_TMP2 NUMBER;
  I NUMBNER;
begin
  V_TMP1:=TO_NUMBER(tmp2);
  V_TMP2:=TO_NUMBER(tmp3);
  FOR I IN V_TMP1..V_TMP2 LOOP
    insert into tpiao(numID,AX0998,AX0999)  VALUES(tmp1||TO_CHAR(I),"asdf","xxxx");
  LOOP;
END;

解决方案 »

  1.   

    tmp1='10000';
    tmp2='20000';
    tmp3 = tmp1 + tmp2 就出错了,有合并字符串的函数?
      

  2.   

    合并字符串用 || tmp3=tmp1||tmp2忽略的话你加一个判断语句了CREATE OR REPLACE PROCEDURE newdata(tmp1 VARCHAR2,tmp2 VARCHAR2,tmp3 VARCHAR2)
     AS
      V_TMP1 NUMBER;
      V_TMP2 NUMBER;
      I NUMBER;
      I_COUNT NUMBER;
    BEGIN
      V_TMP1:=TO_NUMBER(tmp2);
      V_TMP2:=TO_NUMBER(tmp3);
      FOR I IN V_TMP1..V_TMP2 LOOP
        SELECT COUNT(1) INTO I_COUNT FROM  tpiao WHERE NUMID=tmp1||TO_CHAR(I);
    IF I_COUNT=0 THEN
            INSERT INTO tpiao(numID,AX0998,AX0999)  VALUES(tmp1||TO_CHAR(I),"asdf","xxxx");
    END IF;
      END LOOP;
    END;