在oracle的sql×plus 工作单下编译有错误,但是又不提示是什么错误,请懂的给看看我目的是把数据库METHOD表中的METHOD_DLL字段中存储的dll文件读取到电脑的特定目录下,
不知道这段代码是不是这个功能CREATE OR REPLACE PROCEDURE vva_dump_blob (pino NUMBER(10),poname varchar2,poname1 varchar2) IS
    l_file   UTL_FILE.FILE_TYPE;
    l_buffer  RAW(32767);
    l_amount  BINARY_INTEGER := 32767;
    l_pos    INTEGER := 1;
    l_blob   BLOB;
    l_blob_len INTEGER;
  
 BEGIN
    SELECT   METHOD_DLL
    INTO   l_blob
    FROM   'METHOD'
    WHERE METHOD_NO = pino;
       l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
    l_file := UTL_FILE.FOPEN('BLOBDIR',poname,'w', 32767);
  
    WHILE l_pos < l_blob_len LOOP
     DBMS_LOB.READ (l_blob, l_amount, l_pos, l_buffer);
     UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
     l_pos := l_pos + l_amount;
    END LOOP;
  
    UTL_FILE.FCLOSE(l_file);
  
   EXCEPTION
    WHEN OTHERS THEN
     IF UTL_FILE.IS_OPEN(l_file) THEN
      UTL_FILE.FCLOSE(l_file);
     END IF;
     RAISE;
   END;用show errors命令显示的是这个错误
PROCEDURE VVA_DUMP_BLOB 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------------2/2      PLS-00103: 出现符号 ""在需要下列之一时:
         beginfunctionpackagepragma
         proceduresubtypetypeuse<an identifier>
         <a double-quoted delimited-identifier>formcurrentcursor
         externallanguage

解决方案 »

  1.   

    SELECT  METHOD_DLL 
        INTO   l_blob 
        FROM   'METHOD' 表名怎么能加单引号?
      

  2.   

    等待高手
        l_file   UTL_FILE.FILE_TYPE; 
        l_buffer  RAW(32767); 
        l_amount  BINARY_INTEGER := 32767; 
        l_pos    INTEGER := 1; 
        l_blob   BLOB; 
        l_blob_len INTEGER; 
    随便一个都编译不通过
    不知是何物
    不懂
    等待高手
      

  3.   

    找他吧:“ hebo2005 “
      

  4.   

    用PL/sql编译,那里有问题一看就知道了
      

  5.   

    pino NUMBER(10),poname varchar2,poname1 varchar2
    改成 pino NUMBER,poname varchar2,poname1 varchar2
    存储过程的变量不能定义长度
      

  6.   

    l_file   UTL_FILE.FILE_TYPE; 
    改为 l_file   UTL_FILE.FILE_TYPE%TYPE; 别的暂且不知道
      

  7.   


    又重新敲了一遍,错误信息变成这个了,怎么解决呢,我用的是oracle 9.0.1.0.0,是不是版本太低了?警告: 创建的过程带有编译错误。PROCEDURE VVA_DUMP_BLOB 出现错误:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    18/4     PL/SQL: Statement ignored
    18/13    PLS-00302: 必须说明 'PUT_RAW' 组件警告: 创建的过程带有编译错误。
      

  8.   

    首先要在数据库init文件中设置要访问的操作系统目录,然后才能在oracle存储过程中访问os的那个目录!