现在要向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);
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);
return(Result);
end plan_fliles_load_file;为什么create directory bfile_path as filePath;这句老出错,大家帮我修改修改,好长时间都解决不了,急急急。谢谢
解决方案 »
- PL/SQL dev远程连接 telnet 通过 提示超时
- Oracle的ResultSet循环出现问题
- 如何启动远程数据库
- 大家帮忙看看,这个触发器为什么无法创建啊
- 为何以administrator用户登录系统之后,即使不知道oracle用户名,密码也能访问,真是太可怕了!
- describe table问题!!!!!!!!!!!!!!!!!!
- 看看这条SQL语句怎么写??????
- 很急!希望高手帮忙!
- 散分支持penitent,来者有分!
- ORACLE 树形
- ORACLE 10g 逻辑导入(IMPDP)问题
- RAC安装时碰到"failed to initialieze ocrconfig",后来我修改了问题,并重新运行root.sh成功,还能接着后面的配置助手吗?
create directory bfile_path as filePath;
这属于DDL语句,在过程中是不能直接这样写的,不过可用动态的sql来实现,像这样:execute immediate '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;
v_sql varchar2(2000);
begin
INSERT INTO plan_files(filename,filecontent)
valueS(fileName,EMPTY_BLOB())RETURN filecontent INTO B_LOB;
v_sql:='create directory bfile_path as '||filePath;
execute immediate v_sql;
F_LOB:= BFILENAME (bfile_path, FILENAME);
return(Result);
end plan_fliles_load_file;
create directory bfile_path as filePath;
这属于DDL语句,在过程中是不能直接这样写的,不过可用动态的sql来实现,像这样: execute immediate '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;
v_sql varchar2(2000);
begin
INSERT INTO plan_files(filename,filecontent)
valueS(fileName,EMPTY_BLOB())RETURN filecontent INTO B_LOB;
v_sql:='create directory bfile_path as '||''''||filePath||''''; --用引号括起路径
execute immediate v_sql;
F_LOB:= BFILENAME (bfile_path, FILENAME);
return(Result);
end plan_fliles_load_file;
execute immediate v_sql; 这两句执行是正常的
我建议你这样试试:
BFILENAME (''''||bfile_path||'''', FILENAME);
BFILENAME (''''||upper('bfile_path')||'''', FILENAME);