Oracle的LOB字段学习
来源:互联网 发布:蜗牛seo 编辑:程序博客网 时间:2024/05/19 21:15
发布时间:2007-06-02 来源:本站收集整理 作者:
--插入bfile create or replace procedure insert_book(filename varchar2) as
book_file bfile := NULL;
bookExists boolean := false;
begin
book_file := bfilename('BOOK_TEXT', filename);
bookExists := dbms_lob.fileexists(book_file) = 1;
if bookExists then
insert into my_book_files values ((select count(*) from my_book_files) + 1 , book_file);
dbms_output.put_line('Insert sucess! file : ' || filename);
else
dbms_output.put_line('Not exists! file : ' || filename);
end if;
exception
when dbms_lob.noexist_directory then
dbms_output.put_line('Error: ' || sqlerrm);
when dbms_lob.invalid_directory then
dbms_output.put_line('Error : ' || sqlerrm);
when others then
dbms_output.put_line('Unkown Error : ' || sqlerrm);
end insert_book;
/
create or replace procedure insertPDF(fileName varchar2) is
fileLoc bfile;
nID number;
nPDFSize integer;
bFileExists boolean := false;
begin
fileLoc := bfilename('PDFDIR',filename);
bFileExists := dbms_lob.fileexists(fileLoc) = 1;
if bFileExists = false then
dbms_output.put_line(fileName || ' not exists');
return;
end if;
nPDFSize := dbms_lob.getlength(fileLoc);
dbms_output.put_line('the length of ' || fileName || ' is ' || nPDFSize);
select count(*) + 1 into nID from PDFTable;
insert into PDFTable(ID,Pdffile)
values (nID, fileLoc);
exception
when dbms_lob.noexist_directory then
dbms_output.put_line('Error: ' || sqlerrm);
when dbms_lob.invalid_directory then
dbms_output.put_line('Error : ' || sqlerrm);
when others then
dbms_output.put_line('Unkown Error : ' || sqlerrm);
end;
/
--插入 blob
CREATE OR REPLACE procedure insertImg(imgName varchar2) is
v_file_loc bfile;
v_image blob;
nID number;
nImgSize integer;
bFileExists boolean := false;
begin
v_file_loc := bfilename('IMAGEDIR', imgName);
bFileExists := dbms_lob.fileExists(v_file_loc) = 1;
if bFileExists = false then
dbms_output.put_line(imgName || ' not exists');
return;
end if;
nImgSize := dbms_lob.getlength(v_file_loc);
dbms_output.put_line(imgName ||' size is ' || nImgSize);
dbms_output.put_line('Now Inserting empty image row');
select count(*) + 1 into nID from imagetable;
insert into imagetable(ID, image)
values (nID, empty_blob)
returning image into v_image;
DBMS_LOB.FILEOPEN (v_file_loc);
dbms_output.put_line('Open file');
dbms_lob.loadfromfile(v_image, v_file_loc, nImgSize);
DBMS_LOB.FILECLOSE(v_file_loc);
commit;
exception
when others then
dbms_output.put_line('Error happen! ' || sqlerrm);
DBMS_LOB.FILECLOSE(v_file_loc);
end insertImg;
/
--=================================================
SQL> create table view_sites_info (
2 site_id number(3),
3 audio blob default empty_blob(),
4 document clob default empty_clob(),
5 video_file bfile default null
6 );
表已创建。
SQL> commit;
提交完成。
SQL> @e:/writelob
PL/SQL 过程已成功完成。
SQL> desc view_sites_info;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
SITE_ID NUMBER(3)
AUDIO BLOB
DOCUMENT CLOB
VIDEO_FILE BINARY FILE LOB
SQL> select document from view_sites_info where site_id = 100;
DOCUMENT
--------------------------------------------------------------------------------
This is a writing example
SQL> desc view_sites_info
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
SITE_ID NUMBER(3)
AUDIO BLOB
DOCUMENT CLOB
VIDEO_FILE BINARY FILE LOB
SQL> insert into blobtest values (1, bfilename('tempdir','C:/Documents and Settings/Administrator/My Documents/MyPictures/tu1.jpg'));
insert into blobtest values (1,bfilename('tempdir', 'C:/Documents and Settings/Administrator/MyDocuments/My Pictures/tu1.jpg'))
*
ERROR 位于第 1 行:
ORA-00932: 数据类型不一致
SQL> desc BFILETEST
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(3)
FNAME BINARY FILE LOB
SQL> insert into BFILETEST values (1, bfilename('tempdir','C:/Documents and Settings/Administrator/My Documents/MyPictures/tu1.jpg'));
已创建 1 行。
SQL> get E:/insertimg
1 create or replace procedure img_insert (
2 tid varchar2,
3 filename varchar2) as
4 F_LOB BFILE;
5 B_LOB BLOB;
6 begin
7 insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;
8 F_LOB := bfilename('images', filename);
9 dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);
10 dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));
11 dbms_lob.fileclose(F_LOB);
12 commit;
13* end;
SQL> r
1 create or replace procedure img_insert (
2 tid varchar2,
3 filename varchar2) as
4 F_LOB BFILE;
5 B_LOB BLOB;
6 begin
7 insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;
8 F_LOB := bfilename('images', filename);
9 dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);
10 dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));
11 dbms_lob.fileclose(F_LOB);
12 commit;
13* end;
SQL> create table IMAGE_LOB (T_ID varchar2(5) not null, T_IMAGE blob not null ); 表已创建。
SQL> commit;
提交完成。
SQL> get E:/insertimg
1 create or replace procedure img_insert (
2 tid varchar2,
3 filename varchar2) as
4 F_LOB BFILE;
5 B_LOB BLOB;
6 begin
7 insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;
8 F_LOB := bfilename('images', filename);
9 dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);
10 dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));
11 dbms_lob.fileclose(F_LOB);
12 commit;
13* end;
SQL> r
1 create or replace procedure img_insert (
2 tid varchar2,
3 filename varchar2) as
4 F_LOB BFILE;
5 B_LOB BLOB;
6 begin
7 insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;
8 F_LOB := bfilename('images', filename);
9 dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);
10 dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));
11 dbms_lob.fileclose(F_LOB);
12 commit;
13* end;
过程已创建。
SQL> commit;
提交完成。
SQL> commit;
提交完成。
SQL> $cls
SQL> @e:/insertimg
过程已创建。
SQL> commit;
提交完成。
SQL> exec img_insert('1', 'e:/tu1.jpg');
PL/SQL 过程已成功完成。
SQL> @e:/insertimg
过程已创建。
SQL> exec img_insert('2', 'e:/tu2.jpg');
PL/SQL 过程已成功完成。
SQL> select count(*) from image_lob;
COUNT(*)
----------
3
SQL> @e:/insertimg
过程已创建。
PL/SQL 过程已成功完成。
SQL> @e:/insertimg
过程已创建。
PL/SQL 过程已成功完成。
SQL> @e:/insertimg
过程已创建。
PL/SQL 过程已成功完成。
SQL> @e:/insertimg
过程已创建。
PL/SQL 过程已成功完成。
SQL> get e:/insertimg
1 create or replace procedure "img_insert" (
2 tid varchar2,
3 filename varchar2) as
4 F_LOB BFILE;
5 B_LOB BLOB;
6 begin
7 dbms_output.put_line('Now begin');
8 insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;
9 F_LOB := bfilename('IMAGES', filename);
10 dbms_output.put_line('Open success');
11 dbms_output.put_line('Now open :' || filename);
12 dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);
13 dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));
14 dbms_lob.fileclose(F_LOB);
15 commit;
16 EXCEPTION
17 when others
18 then
19 DBMS_OUTPUT.PUT_LINE('OTHERS Exception ' || sqlerrm );
20* end;
21 /
过程已创建。
SQL> r
1 create or replace procedure "img_insert" (
2 tid varchar2,
3 filename varchar2) as
4 F_LOB BFILE;
5 B_LOB BLOB;
6 begin
7 dbms_output.put_line('Now begin');
8 insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;
9 F_LOB := bfilename('IMAGES', filename);
10 dbms_output.put_line('Open success');
11 dbms_output.put_line('Now open :' || filename);
12 dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);
13 dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));
14 dbms_lob.fileclose(F_LOB);
15 commit;
16 EXCEPTION
17 when others
18 then
19 DBMS_OUTPUT.PUT_LINE('OTHERS Exception ' || sqlerrm );
20* end;
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
ANYDATATAB
BFILETEST
BLOBTEST
BONUS
DEPT
EMP
IMAGE_LOB
LINEITEM_CV
LINEITEM_DP
SALGRADE
TAB2
TABLE_NAME
------------------------------
TEST
TEST2
VIEW_SITES_INFO
已选择14行。
- Oracle的LOB字段学习
- Oracle LOB字段操作的一点教训
- java oracle setblob lob字段的问题
- C#操作oracle,LOB字段
- oracle lob clob字段读写
- Oracle中查询带有lob字段的表的大小
- J2EE程序中使用oracle数据库LOB字段的总结
- 通过JDBC操纵Oracle数据库LOB字段的分析
- Java程序中使用oracle数据库LOB字段的总结
- ORACLE中LOB字段的使用和维护
- 通过JDBC操纵Oracle数据库LOB字段的分析
- ORACLE中LOB字段的使用和维护
- 创建带有lob字段的表or 添加lob字段
- oracle lob的存储
- jdbc操纵Oracle数据库lob字段
- oracle中读写LOB类型字段
- ORACLE LOB字段 不能用union 查询
- 通过JDBC操纵Oracle LOB字段
- 调整Oracle应用系统性能的原则和方法
- Oracle10g数据库优化实用心得小结
- Oracle数据库高级复制功能介绍
- 实现Oracle异地数据自动备份的方案
- C++ 开发P2P及时消息发送程序(2)
- Oracle的LOB字段学习
- PLSQL单行函数和组函数详解
- Oracle PL/SQL语言基础
- oracle常用函数
- .NET截取指定长度汉字超出部分以"..."代替
- gpg linux 下简单操作
- Oracle的翻页Sql语句
- PL/SQL基础:阶层查询
- COM比较简单的错误,直接返回表示错误原