http://www.itpub.net/viewthread.php?tid=136741&page=1 标题: sqlplus中如何插入blob数据? shell 老会员 精华贴数 0 个人空间 0 技术积分 1258 (1798) 社区积分 12 (12467) 注册日期 2002-12-15 论坛徽章:3 #1 使用道具 发表于 2003-6-29 18:04 sqlplus中如何插入blob数据? 一个字段是blob型,请问在 sqlplus中如何插入blob数据? __________________ 请各位老师多指教! 只看该作者 southron 中级会员 精华贴数 0 个人空间 0 技术积分 676 (3545) 社区积分 0 (89212) 注册日期 2002-12-6 论坛徽章:0 #2 使用道具 发表于 2003-6-29 18:37 在internal这个用户下给scott用户授权如下: SQL>grant create any directory to scott; SQL>grant create any library to scott; 在scott这个用户下执行下述语句: SQL>create table bfile_tab (bfile_column BFILE); SQL>create table utl_lob_test (blob_column BLOB); SQL>create or replace directory utllobdir as 'C:\DDS\EXTPROC'; SQL>set serveroutput on 然后执行下面语句就将C:\DDS\EXTPROC目录下的word文件COM.doc存入到utl_lob_test 表中的blob_column字段中了。 declare a_blob BLOB; a_bfile BFILE := BFILENAME('UTLLOBDIR','COM.doc'); --用来指向外部操作系统 文件 begin insert into bfile_tab values (a_bfile) returning bfile_column into a_bfile; insert into utl_lob_test values (empty_blob()) returning blob_column into a_blob; dbms_lob.fileopen(a_bfile); dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile)); dbms_lob.fileclose(a_bfile); commit; end; / SQL>show errors 此时可以使用DBMS_LOB包的getlength这个procedure来检测是否已经将该word文件存入 到blob字段中了。如: SQL> select dbms_lob.getlength(blob_column) from UTL_LOB_TEST; 结果如下: DBMS_LOB.GETLENGTH(BLOB_COLUMN) ------------------------------- 83968 说明该word文件已经存入到blob字段中去了。 __________________ 好好学习,天天向上!