现在要向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;这句老出错,大家帮我修改修改,好长时间都解决不了,急急急。谢谢
解决方案 »
- Oracle显示最新记录
- 有一大堆UPDATE,怎么写效率才高?
- 怎么样精确四舍五入?
- 菜鸟提问: procedure中使用execute时报ora-00928为什么?
- 问一个循环插入报错,怎么知道我哪里错了
- 探讨 什么情况下面合适使用存储过程? 老大们进来看看
- 求一触发器(初学者问题)
- 关于大文本的类型,非常着急
- char 到 number 的数据类型转换问题,急~在线等!谢谢各位大虾了*_*
- 将表空间改为脱机(恢复)后,不能再联机了,如何办?
- 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);