--切换回scott用户后创建表
CREATE TABLE ebook
(id int primary key,title VARCHAR2(40), book_file BFILE)
/--使用BEFILENAME函数向表中插入数据,
--BFILENAME函数:BFILENAME(逻辑目录名,文件名),此处插入的是文件定位指针映射,并不是文件本身
INSERT INTO ebook VALUES(1,'struts精讲',BFILENAME('TEST_DIR','struts.txt'))
/--向数据表中追加一个BLOP(大二进制)类型的字段
ALTER TABLE ebook
ADD picture BLOB
/--向ebooks表中插入二进制图像
DECLARE
l_bfile BFILE;
l_blob BLOB;
BEGIN
UPDATE ebook
--从这儿就开始看不懂了。整个过程大概意思是向一个表当中插入一个BLOB类型的数据
--但下面的return是什么意思?这又不是个函数。
set picture =EMPTY_BLOB() where title='struts精讲'
RETURN picture INTO l_blob;
l_bfile := BFILENAME('TEST_DIR', '\image.bmp');
--这个open又是啥意思啊?似乎是用只读的方式打开l_bfile,不知我理解的对不对?
DBMS_LOB.OPEN(l_bfile, DBMS_LOB.FILE_READONLY);
--现在似乎把数据存入到l_blob变量当中了,但他又是如何将数据存入ebook表中的呢?跟上面的那个return有关系吗?
DBMS_LOB.LOADFROMFILE(l_blob, l_bfile, DBMS_LOB.GETLENGTH(l_bfile));
DBMS_LOB.CLOSE(l_bfile);
COMMIT;
END;
/
CREATE TABLE ebook
(id int primary key,title VARCHAR2(40), book_file BFILE)
/--使用BEFILENAME函数向表中插入数据,
--BFILENAME函数:BFILENAME(逻辑目录名,文件名),此处插入的是文件定位指针映射,并不是文件本身
INSERT INTO ebook VALUES(1,'struts精讲',BFILENAME('TEST_DIR','struts.txt'))
/--向数据表中追加一个BLOP(大二进制)类型的字段
ALTER TABLE ebook
ADD picture BLOB
/--向ebooks表中插入二进制图像
DECLARE
l_bfile BFILE;
l_blob BLOB;
BEGIN
UPDATE ebook
--从这儿就开始看不懂了。整个过程大概意思是向一个表当中插入一个BLOB类型的数据
--但下面的return是什么意思?这又不是个函数。
set picture =EMPTY_BLOB() where title='struts精讲'
RETURN picture INTO l_blob;
l_bfile := BFILENAME('TEST_DIR', '\image.bmp');
--这个open又是啥意思啊?似乎是用只读的方式打开l_bfile,不知我理解的对不对?
DBMS_LOB.OPEN(l_bfile, DBMS_LOB.FILE_READONLY);
--现在似乎把数据存入到l_blob变量当中了,但他又是如何将数据存入ebook表中的呢?跟上面的那个return有关系吗?
DBMS_LOB.LOADFROMFILE(l_blob, l_bfile, DBMS_LOB.GETLENGTH(l_bfile));
DBMS_LOB.CLOSE(l_bfile);
COMMIT;
END;
/
希望对你有帮助