oracle数据库,有张表A,其中有个字段xx,类型为blob字段,,我想更新这个字段,
update a set xx=xx|| char_to_raw('aa') ,报错,其中,char_to_raw是我写的将字符转16进制函数,错误应该是出在接的问题,请教怎么将原来的这个字段接上转换后的数据更新成新的字段?
update a set xx=xx|| char_to_raw('aa') ,报错,其中,char_to_raw是我写的将字符转16进制函数,错误应该是出在接的问题,请教怎么将原来的这个字段接上转换后的数据更新成新的字段?
update a set xx=xx|| utl_raw.cast_to_raw('aa')
Insert Into t111 Values(Hextoraw('aa'));Declare
c Blob;
Begin
select a Into c From t111 For Update;
dbms_lob.append(c,Hextoraw('bb'));
Update t111
set a = c;
End;
--估计要改下 ||这个应该是对字符型有效的
update a set xx=utl_raw.cast_to_raw(utl_raw.cast_to_varchar2(xx)||'aa')
insert into t_blob values ('tom',utl_raw.cast_to_raw('tom is a good boy!'));select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME
--------------------
UTL_RAW.CAST_TO_VARCHAR2(DBLOB)
----------------------------------------------------------------------------------------------------
tom
tom is a good boy!Declare
b_c Blob;
Begin
select dblob Into b_c From t_blob For Update;
dbms_lob.append(b_c,utl_raw.cast_to_raw('and you?'));
Update t_blob
set dblob = b_c;
End;--commit;select utl_raw.cast_to_varchar2(dblob) from t_blob;UTL_RAW.CAST_TO_VARCHAR2(DBLOB)
---------------------------------------------------------------------
tom is a good boy!and you?
,我在存储过程中跟了下xx这个blob字段的值是open=F, temp=F, length=2735, chunksize=8132, data=5957303130313B59573031303130313B595730313031303130383B595730313031303130385F3334303B595730313031303130385F3331363B5957303130313031303830313B59573031303130313038303130313B59573031303130313038303130315F3334323B59573031303130313038303130315F3334333B59573031303130313038303130323B59573031303130313038303130325F3334343B59573031303130313038303130325F3334353B59573031303130313038303130333B59573031303130313038303130335F3334363B59573031303130313038303130335F3334373B59573031303130313038303130335F3330313B59573031303130,而我要在这个字段的基础上接上‘;99999’,所以用如下语句:
update A set xx= utl_raw.cast_to_raw(tempywrawdata||‘;99999’) ;其中tempywrawdata变量是varchar2(32767)类型,是通过tempywrawdata:=utl_raw.cast_to_varchar2(XX)转换后的,执行后就报图示错误,长度肯定是没有超过限制的吧。原来的长度是2735,加上转换‘;99999’应该也不会超长吧,怎么会报超长的错呢?请指教。
这样试试,,也是连接作用