现在要向Oracle中上传一个文件,代码如下:
create or replace function plan_fliles_load_file
       (filePath varchar2,fileName varchar2) return boolean
/* *******************************************************************************************
--功    能:向表中上传文件
--输入参数:
   fileName:要上传的文件名称, filePath:本文件全路径
--输出参数: 上传文件是否成功                    
--********************************************************************************************/
AS
    Result BOOLEAN;
    F_LOB BFILE;
    B_LOB BLOB;
    bfile_path varchar2;
    
begin
    INSERT INTO plan_files(filename,filecontent)
       valueS(fileName,EMPTY_BLOB())RETURN filecontent INTO B_LOB;
    create directory bfile_path as filePath;
    
    F_LOB:= BFILENAME (bfile_path, FILENAME);
    IF (DBMS_LOB.FILEEXISTS(F_LOB) != 0) then
       DBMS_LOB.OPEN(F_LOB, DBMS_LOB.LOB_READONLY);/* 打开bfile源文件 */ 
       DBMS_LOB.OPEN(B_LOB, DBMS_LOB.LOB_READWRITE);/* 打开目标blob: */ 
       DBMS_LOB.LOADFROMFILE(B_LOB, F_LOB,DBMS_LOB.GETLENGTH(F_LOB));/*从文件中装入 */
       DBMS_LOB.CLOSE(B_LOB);/* 记得关闭: */ 
       DBMS_LOB.CLOSE(F_LOB);
       COMMIT;
       Result:=true;
  
    EXCEPTION/*如果发生异常*/
       WHEN OTHERS THEN
          ROLLBACK;
          Result:=FALSE;
          
  return(Result);
end plan_fliles_load_file;为什么create directory bfile_path as filePath;这句老出错,大家帮我修改修改。谢谢

解决方案 »

  1.   

    文件操作目录
    CREATE DIRECTORY recv_area AS 'd:\test' ;错误是什么,是不是没有权限
    建立目录要有DBA权限可以看看
    http://blog.csdn.net/java3344520/archive/2009/11/09/4789025.aspx
      

  2.   

    谢谢!二楼的例子我看了,试了试还是不行。我刚学ORACLE开发,能不能麻烦修改一下我上面的程序代码,可以运行。创建的DIRECTORY可以让任何人使用。非常急丫。
      

  3.   

    谢谢。用命令行是可以创建的,但在函数中就不能创建而且出错。用户已经有权限create any directory。能不能帮我直接改改程序
      

  4.   

    试试:
    execute immediate 'create directory' || :bfile_path || 'as' || :filePath
    using bfile_path,filePath;
      

  5.   

    谢谢。不行,提示的错误信息如下:Compilation errors for FUNCTION CJS.PLAN_FLILES_LOAD_FILEError: PLS-00049: 错误的赋值变量 'BFILE_PATH'
    Line: 27
    Text: execute immediate 'create directory' || :bfile_path || 'as' || :filePath using bfile_path,filePath;Error: PLS-00049: 错误的赋值变量 'FILEPATH'
    Line: 27
    Text: execute immediate 'create directory' || :bfile_path || 'as' || :filePath using bfile_path,filePath;Error: PLS-00103: 出现符号 "EXCEPTION"在需要下列之一时:
            begin case declare
              else elsif end exit for goto if loop mod null pragma raise
              return select update while with <an identifier>
              <a double-quoted delimited-identifier> <a bind variable> <<
              close current delete fetch lock insert open rollback
              savepoint set sql execute commit forall merge pipe
    Line: 41
    Text: EXCEPTION/*如果发生异常*/Error: PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
            end not pragma
              final instantiable order overriding static member constructor
              map
    Line: 48
      

  6.   

    execute immediate 'create directory ' || :bfile_path || ' as ' || filePath;
    可以不?
      

  7.   

    execute immediate 'create directory ' || bfile_path || ' as ' || filePath;
      

  8.   

    还是不行,错误如下:Compilation errors for FUNCTION CJS.PLAN_FLILES_LOAD_FILEError: PLS-00049: 错误的赋值变量 'BFILE_PATH'
    Line: 27
    Text: execute immediate 'create directory' || :bfile_path || 'as' || :filePath;Error: PLS-00049: 错误的赋值变量 'FILEPATH'
    Line: 27
    Text: execute immediate 'create directory' || :bfile_path || 'as' || :filePath;Error: PLS-00103: 出现符号 "EXCEPTION"在需要下列之一时:
            begin case declare
              else elsif end exit for goto if loop mod null pragma raise
              return select update while with <an identifier>
              <a double-quoted delimited-identifier> <a bind variable> <<
              close current delete fetch lock insert open rollback
              savepoint set sql execute commit forall merge pipe
    Line: 41
    Text: EXCEPTION/*如果发生异常*/Error: PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
            end not pragma
              final instantiable order overriding static member constructor
              map
    Line: 48