以下是存储过程:  SQL> CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\aa'; --图片目录
  
  目录已创建。
  
  SQL> CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER(38),FILENAME VARCHAR2) AS
  
  2  F_LOB BFILE;
  
  3  B_LOB BLOB;
  
  4 BEGIN
  
  5  INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS)  --表的两个字段
  
  6   VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
  
  7  F_LOB:= BFILENAME ('IMAGES', FILENAME);
  
  8  DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
  
  9  DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
  
  10  DBMS_LOB.GETLENGTH (F_LOB));
  
  11  DBMS_LOB.FILECLOSE (F_LOB);
  
  12  COMMIT;
  
  13 END;
  
  14 /结果是: Warning: proedure created with compilation errors我仔细检查了,不知道是哪错了,求助大家!

解决方案 »

  1.   

    show errors一下看看报的什么错误  然后贴出来
      

  2.   

    错误是:1/33     PLS-00103: Encountered the symbol "(" when expecting one of the following:
             := .) , @ % default character
             The symbol ":=" was substituted for "(" to continue.1/55     PLS-00103: Encountered the symbol "(" when expecting one of the following:
             := .) , @ % default character
             The symbol ":=" was substituted for "(" to continue.
      

  3.   

    (TID NUMBER(38),
    这个不能带有38   只能写成TID NUMBER
      

  4.   

    CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER(38),FILENAME VARCHAR2) AS 
    >>> TID NUMBER把精度去掉试试。
      

  5.   


    compile error,是简单的语法错误, 这个没有必要放到这里来一点点的问了,效率太低。你用plsql developer或者toad,或者oracle sql developer 在工具里compile一下,这些工具会把语法错误的行都标识出来的,你一个一个的排查了。这样高效。
      

  6.   

    我是在网上直接copy的,运行的时候发现有错误,好长时间没用oracle,都忘记了
      

  7.   

    已写入 file afiedt.buf  1  CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER,FILENAME VARCHAR2)
      2  AS
      3       F_LOB BFILE;
      4       B_LOB BLOB;
      5   BEGIN
      6          INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS)
      7           VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
      8           F_LOB:= BFILENAME ('IMAGES', FILENAME);
      9           DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
     10           DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
     11           DBMS_LOB.GETLENGTH (F_LOB));
     12           DBMS_LOB.FILECLOSE (F_LOB);
     13           COMMIT;
     14*    END;
    WANGZK>/警告: 创建的过程带有编译错误。WANGZK>SHOW ERRORS
    PROCEDURE IMG_INSERT 出现错误:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    5/2      PLS-00103: 出现符号 ""在需要下列之一时:
             begin function package pragma
             procedure subtype type use <an identifier>
             <a double-quoted delimited-identifier> form current cursor
             符号 "" 被忽略。WANGZK>ED  1  CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER,FILENAME VARCHAR2)
      2  AS
      3       F_LOB BFILE;
      4       B_LOB BLOB;
      5     BEGIN
      6           INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS)
      7           VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
      8           F_LOB:= BFILENAME ('IMAGES', FILENAME);
      9           DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
     10           DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
     11           DBMS_LOB.GETLENGTH (F_LOB));
     12           DBMS_LOB.FILECLOSE (F_LOB);
     13           COMMIT;
     14*    END;
    WANGZK>/过程已创建。
    其实你的过程没有啥错误,只不过是你在网上粘贴的问题,有些特殊符号也粘贴过来了.你可以自己手动的清除下空格和空行.或者自己手工的重新输入一次就应该OK了.看看你的报错信息是不是和我上面的报错信息一致.