现在要向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;这句老出错,大家帮我修改修改。谢谢
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;这句老出错,大家帮我修改修改。谢谢
CREATE DIRECTORY recv_area AS 'd:\test' ;错误是什么,是不是没有权限
建立目录要有DBA权限可以看看
http://blog.csdn.net/java3344520/archive/2009/11/09/4789025.aspx
execute immediate 'create directory' || :bfile_path || 'as' || :filePath
using bfile_path,filePath;
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
可以不?
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