insert into Tb(content) values('CRMNet'); 只要你想插入的内容不超过4000Bytes, 就可以直接插入。 否则得使用程序插入。
....操作lob类型字段 BFILE: 1. BFILE类型一般用于存储文件。 建立一个目录: create directory tmp as 'e:\'; 建立一个有bfile类型column的表: create table a(photo bfile); 插入值: insert into a values(bfilename('tmp','aa.jpg')); --bfilename('direct','filename')这个函数将文件转换为bfile类型BLOB: 2. 将图片插入到BLOB类型的字段中 建立一个表: create table a(a blob); 建立一个目录: create directory tmp as 'e:\'; 建立一个PL/SQL块: declare b_file bfile; b_lob blob; begin insert into a(a) values(empty_blob()) return a into b_lob; --为了使PL/SQL编译成功,必须先为该列插入一个empty_blob() 值,return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中。 b_file:=bfilename('tmp','filename.jpg'); --tmp是建立的文件所在的目录,filename.jpg是文件名;将文件转换为bfile类型 dbms_lob.open(b_file,dbms_lob.file_readonly);--将b_file 以只读的方式打开 dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));-- 将b_file中的内容转换到b_lob中 dbms_lob.close(b_file); commit; end; CLOB: 方法和blob一样。3.将表中读数据转换为xml并打印:declare resultvalue clob; xmlstr varchar2(32767); line varchar2(2000); line_no integer:=1; begin resultvalue:=dbms_xmlquery.getXML('select name,sex from employee');--将SQL的查询语句的结果转换成一个clob类型的xml xmlstr:=dbms_lob.substr(resultvalue,32767);--从clob类型中截取字符串 loop exit when xmlstr is null; line:=substr(xmlstr,1,instr(xmlstr,chr(10))-1);--从xmlstr中截取一个字符串,从第一个字符开始,以ascii码为10的字符结尾 dbms_output.put_line(line_no || ':'||line);--打印行号+字符串 xmlstr:=substr(xmlstr,instr(xmlstr,chr(10))+1);--从第一个回车后开始截取字符串到结尾,赋值给xmlstr line_no:=line_no+1; end loop; end;--主要用到的程序包dbms_xmlquery; dbms_lob;
--上次做了测试 10g下 create table t_blob(stuname varchar2(20),dblob blob);scott@YPCOST> ed 已写入 file afiedt.buf 1* insert into t_blob values ('tom',utl_raw.cast_to_raw('tom is a good boy!')) scott@YPCOST> /已创建 1 行。scott@YPCOST> select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME -------------------- UTL_RAW.CAST_TO_VARCHAR2(DBLOB) ---------------------------------------------------------------------------------------------------- tom tom is a good boy! scott@YPCOST> update t_blob set dblob=utl_raw.cast_to_raw('tom is not a good boy!') where stuname='t om';已更新 1 行。scott@YPCOST> commit;提交完成。scott@YPCOST> select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME -------------------- UTL_RAW.CAST_TO_VARCHAR2(DBLOB) ---------------------------------------------------------------------------------------------------- tom tom is not a good boy!
只要你想插入的内容不超过4000Bytes, 就可以直接插入。
否则得使用程序插入。
BFILE: 1. BFILE类型一般用于存储文件。 建立一个目录: create directory tmp as 'e:\'; 建立一个有bfile类型column的表: create table a(photo bfile); 插入值: insert into a values(bfilename('tmp','aa.jpg')); --bfilename('direct','filename')这个函数将文件转换为bfile类型BLOB: 2. 将图片插入到BLOB类型的字段中 建立一个表: create table a(a blob); 建立一个目录: create directory tmp as 'e:\'; 建立一个PL/SQL块: declare b_file bfile; b_lob blob; begin insert into a(a) values(empty_blob()) return a into b_lob; --为了使PL/SQL编译成功,必须先为该列插入一个empty_blob() 值,return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中。
b_file:=bfilename('tmp','filename.jpg'); --tmp是建立的文件所在的目录,filename.jpg是文件名;将文件转换为bfile类型
dbms_lob.open(b_file,dbms_lob.file_readonly);--将b_file 以只读的方式打开
dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));-- 将b_file中的内容转换到b_lob中
dbms_lob.close(b_file);
commit;
end; CLOB: 方法和blob一样。3.将表中读数据转换为xml并打印:declare
resultvalue clob;
xmlstr varchar2(32767);
line varchar2(2000);
line_no integer:=1;
begin
resultvalue:=dbms_xmlquery.getXML('select name,sex from employee');--将SQL的查询语句的结果转换成一个clob类型的xml
xmlstr:=dbms_lob.substr(resultvalue,32767);--从clob类型中截取字符串
loop
exit when xmlstr is null;
line:=substr(xmlstr,1,instr(xmlstr,chr(10))-1);--从xmlstr中截取一个字符串,从第一个字符开始,以ascii码为10的字符结尾
dbms_output.put_line(line_no || ':'||line);--打印行号+字符串
xmlstr:=substr(xmlstr,instr(xmlstr,chr(10))+1);--从第一个回车后开始截取字符串到结尾,赋值给xmlstr
line_no:=line_no+1;
end loop;
end;--主要用到的程序包dbms_xmlquery; dbms_lob;
create table t_blob(stuname varchar2(20),dblob blob);scott@YPCOST> ed
已写入 file afiedt.buf 1* insert into t_blob values ('tom',utl_raw.cast_to_raw('tom is a good boy!'))
scott@YPCOST> /已创建 1 行。scott@YPCOST> select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME
--------------------
UTL_RAW.CAST_TO_VARCHAR2(DBLOB)
----------------------------------------------------------------------------------------------------
tom
tom is a good boy!
scott@YPCOST> update t_blob set dblob=utl_raw.cast_to_raw('tom is not a good boy!') where stuname='t
om';已更新 1 行。scott@YPCOST> commit;提交完成。scott@YPCOST> select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME
--------------------
UTL_RAW.CAST_TO_VARCHAR2(DBLOB)
----------------------------------------------------------------------------------------------------
tom
tom is not a good boy!
每截取1000个字符 就调用一次update,在原来字段后边添加上
不知道行不行 我没试过
下面是pb 读取blob 跟clob 差不多
ll_file_size = FileLength(is_pathname)
fh = FileOpen( is_pathname, StreamMode!, Read!, LockReadWrite!)IF fh <> -1 THEN
nBytes = FileRead(fh, blTemp) DO WHILE nBytes > 0
blGoodsImage = blGoodsImage + blTemp
ll_Pos = ll_Pos + nBytes
FileSeek( fh, ll_Pos, FromBeginning!)
nBytes = FileRead(fh, blTemp)
LOOP FileClose(fh)
END IF在修改bolb
updateblob tb_qc050
SET good_image = :blGoodsImage