2,插入大对象列
①先插入普通列数据
②遇到大对象列时,插入空白构造函数。
字符型:empty_clob(),empty_nclob()
二进制型:empty_blob()
二进制文件类型:BFileName 函数指向外部文件。
BFileName 函数:
BFileName(‘逻辑目录名’,‘文件名’);
逻辑目录名只能大写,因为数据词典是以大写方式存储。Oracle 是区分大小写的。
在创建时,无需将BFileName 函数逻辑目录指向物理路径,使用时才做检查二者是否关联。
例子:
Insert Into tLob
Values(1,'Gene',empty_clob(),empty_blob(),bfilename('MYDIR','IMG_0210.JPG'));
--DBMS_LOB.Read():从LOB 数据中读取指定长度数据到缓冲区的过程。
--DBMS_LOB.Read(LOB 数据,指定长度,起始位置,存储返回LOB 类型值变量);
--例子:
Declare
varC clob;
vRStr varchar2(1000);
ln number(4);
Strt number(4);
Begin
select resume into varC from t_clob where no = 1;
ln := DBMS_LOB.GetLength(varC);
Strt := 1;
DBMS_LOB.Read(varC, ln, Strt, vRStr);
DBMS_output.put_line('Return: ' || vRStr);
End;
--:DBMS_LOB.Write():将指定数量的数据写入LOB 的过程。
--DBMS_LOB.Write(被写入LOB, 写入长度(指写入LOB 数据),写入起始位置(指被写入LOB),
--写入LOB 数据);
Declare
varC clob;
vWStr varchar2(1000);
vStrt number(4);
ln number(4);
Begin
vWStr := 'CLOB';
ln := Length(vWStr);
vStrt := 5;
select resume into varC from tlob where no = 1 FOR UPDATE;
DBMS_LOB.Write(varC, ln, vStrt, vWStr);
DBMS_output.put_line('改写结果为: '||varC);
Commit;
End;