求向Oracle中插入任意文件的过程代码 我的测试表,结构如下表名Test字段 类型 ID 数值型MYFILE Blob我想要做的是向Test中插入我硬盘上指定的任意文件,例如一副图片。求一个Procedure,望大虾们不吝赐教~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 学习阶段, 楼主可以参考一下create or replace procedure copyfiletoblob(p_id integer,p_directory varchar2,p_filename varchar2)ASv_file_blob blob;v_file_name bfile;v_dest_offset integer:=1;v_src_offset integer:=1;begin insert into test1026(id,myfile) values (p_id,empty_blob()) returning myfile into v_file_blob; v_file_name :=bfilename(p_directory,p_filename); --open file dbms_lob.open(v_file_name,dbms_lob.file_readonly); dbms_lob.loadblobfromfile(v_file_blob,v_file_name,dbms_lob.getlength(v_file_name),v_dest_offset,v_src_offset); dbms_lob.close(v_file_name); commit; end copyfiletoblob;/create the BFILE directory-- create the BFILE directoryCREATE DIRECTORY SAMPLE_FILES_DIR AS 'C:\test';SQL> call copyfiletoblob(3,'SAMPLE_FILES_DIR','cry.mp3');调用完成。SQL> select id, dbms_lob.getlength(myfile) from test1026; ID DBMS_LOB.GETLENGTH(MYFILE)---------- -------------------------- 1 5577886 3 5577886SQL> call copyfiletoblob(4,'SAMPLE_FILES_DIR','cs.txt');调用完成。SQL> select id, dbms_lob.getlength(myfile) from test1026; ID DBMS_LOB.GETLENGTH(MYFILE)---------- -------------------------- 1 5577886 3 5577886 4 22SQL> 问题解决了。其实我的本来目的是想在.net里实现上传文件,本来想着用个oracle的过程,在.net里调用会简单一点,结果发现这样似乎更麻烦。于是直接用.net代码实现就可以了,几行就搞定。不过也多谢楼上了,让我对oracle又多了解了一点。 关于给表分区的问题 linux 内存的问题,怎样释放ya 两张表根据某一条件来修改另外一张表的数据 哪位大侠 帮忙看看这个存储过程 oracle 以前没用过 今天刚弄的 都是错误 求Oracle分页存储过程??? 建表问题,不知道怎么建合理 oracle中 rac问题 vc下大家都用什么库来访问数据库? 高手请提供一个方案:我的安装Oracle盘不是太大,导致现在数据在这个盘放不下了,想改到一个比较大的盘上,又不想让数据丢失。有什么比较 如何避免触发器二次触发 向大家请教一个分组的语句的写法! occi如何以sys用户建立到数据库的连接呢
p_id integer,
p_directory varchar2,
p_filename varchar2)
AS
v_file_blob blob;
v_file_name bfile;
v_dest_offset integer:=1;
v_src_offset integer:=1;
begin
insert into test1026(id,myfile) values (p_id,empty_blob())
returning myfile into v_file_blob; v_file_name :=bfilename(p_directory,p_filename);
--open file
dbms_lob.open(v_file_name,dbms_lob.file_readonly);
dbms_lob.loadblobfromfile(v_file_blob,v_file_name,dbms_lob.getlength(v_file_name),v_dest_offset,v_src_offset);
dbms_lob.close(v_file_name); commit;
end copyfiletoblob;
/
create the BFILE directory-- create the BFILE directory
CREATE DIRECTORY SAMPLE_FILES_DIR AS 'C:\test';
SQL> call copyfiletoblob(3,'SAMPLE_FILES_DIR','cry.mp3');调用完成。
SQL> select id, dbms_lob.getlength(myfile) from test1026; ID DBMS_LOB.GETLENGTH(MYFILE)
---------- --------------------------
1 5577886
3 5577886SQL> call copyfiletoblob(4,'SAMPLE_FILES_DIR','cs.txt');调用完成。SQL> select id, dbms_lob.getlength(myfile) from test1026; ID DBMS_LOB.GETLENGTH(MYFILE)
---------- --------------------------
1 5577886
3 5577886
4 22SQL>
其实我的本来目的是想在.net里实现上传文件,本来想着用个oracle的过程,在.net里调用会简单一点,结果发现这样似乎更麻烦。于是直接用.net代码实现就可以了,几行就搞定。
不过也多谢楼上了,让我对oracle又多了解了一点。