去掉EXECUTE declare
file_path  varchar(10);
file_name  varchar(10);
ins_num    number(10);
begin
file_path:='c:\temp';
file_name:='1.txt';
proc_import(file_path,file_name,ins_num);
end;

解决方案 »

  1.   

    谢谢楼上的大虾,可又出现了如下错误ORA-01400: 无法将 NULL 插入 ("SYS"."TEMP"."CODE")
    ORA-06512: 在"SYS.PROC_IMPORT", line 25
    ORA-06512: 在line 8
    存储过程如下:
    create or replace procedure sys.proc_import(filepath in varchar2, filename in varchar2,totalinserted  out number) as
     
      file_handler UTL_FILE.FILE_TYPE;
      strbuffer    varchar(200);
      user_id      temp.code%type;
      user_tel     temp.tel%type;
      sep1          number;
      sep2          number;
      
    begin
      sep1:=0;
      sep2:=0;
      file_handler:=UTL_FILE.FOPEN(filepath,filename,'r');
    loop
      begin
      UTL_FILE.Get_Line(file_handler,strbuffer);
      EXCEPTION
      WHEN NO_DATA_FOUND THEN
      exit;
      end;
      sep1:=INSTR(strbuffer,'',1,1);
      sep2:=INSTR(strbuffer,'',1,2);
      user_id:=SUBSTR(strbuffer,1,sep1-1);
      user_tel:=SUBSTR(strbuffer,sep1+1,sep2-sep1-1);
      insert into temp(code,tel)values(user_id,user_tel);
      totalinserted:=totalinserted+1;
      end loop;
      UTL_FILE.Fclose(file_handler);
      commit;
      
    end proc_import;
      

  2.   

    把你temp表中code字段设为可以为空
      

  3.   

    to  freeddy2003:
             我已经将code字段改为可以为空了,但是还是不行。