DECLARE
  x VARCHAR2(5000):='D00';
  i number;
  j number; 
BEGIN
  FOR i IN 1 .. 999 LOOP
    for j in 1.. 999 loop
  insert into  record_voice_log (voice_file) values 
  ('x'||lpad(i,3,'0')||lpad(j,3,'0');     end loop;
  END LOOP;
END;最后的效果想插表record_voice_log 如下记录voice_file
------------------------
D00000001
D00000002
.
.
D00001999
.
.SQL执行不了,大家帮忙看看~~

解决方案 »

  1.   

    --问题 
    1.lpad(i,3,'0') lpad 的第一个参数必须是字符型
    2.'x'只是一个字符,不是你需要的变量x如果你后面正确输出也只是x001001之类的
    下面是我调试通过的一个输出,你可以看看-- Created on 2008-08-19 by SZGCC 
     DECLARE 
      x VARCHAR2(5000):='D00'; 
      i number; 
      j number; 
      vI varchar2(8);
      vJ varchar2(8);
    BEGIN 
      FOR i IN 1 .. 999 LOOP 
          vI:= i||'';
          vi := lpad(vi,3,'0') ;
        for j in 1.. 999 loop 
            vJ:= J||'';
            vJ := lpad(vJ,3,'0') ;
            dbms_output.put_line(x||vi ||vJ);     end loop; 
      END LOOP; 
    END; 
      

  2.   

    你的代码少了个括号.
    DECLARE
      X VARCHAR2(5000) := 'D00';
      I NUMBER;
      J NUMBER;
    BEGIN
      FOR I IN 1 .. 9 LOOP
        FOR J IN 1 .. 9 LOOP
          INSERT INTO RECORD_VOICE_LOG
            (VOICE_FILE)
          VALUES
            (X || LPAD(I, 3, '0') || LPAD(J, 3, '0'));
        END LOOP;
      END LOOP;
    END;