Oracle 更新BLOB列ORA-01461:只能为插入到长列中绑定长值
我想在BLOB列中存储一个过程,不幸的是,我无法向您展示代码,但它包含126行。这是我正在使用的更新Oracle 更新BLOB列ORA-01461:只能为插入到长列中绑定长值,oracle,Oracle,我想在BLOB列中存储一个过程,不幸的是,我无法向您展示代码,但它包含126行。这是我正在使用的更新 DECLARE str varchar2(20000); BEGIN str :='create or replace A_LONG_PROCEDURE procedure .........'; UPDATE tab1 SET report=str WHERE reference= 'TER'; commit; end; / 我得到错误ORA-01461;只能为插入到长列中绑定长
DECLARE str varchar2(20000);
BEGIN str :='create or replace A_LONG_PROCEDURE procedure .........';
UPDATE tab1 SET report=str
WHERE reference= 'TER';
commit;
end;
/
我得到错误ORA-01461;只能为插入到长列中绑定长值
我尝试使用更新set='CREATE OR REPLACE LONG_PROCEDURE…'
我得到了错误01704 string literal to LONG
如何将长过程更新为blob列?您需要将列类型更改为
CLOB
或将CLOB
变量初始化为过程文本,然后在插入之前使用过程将其转换为blob
Oracle 11g的示例:
表格设置:
create table lob_sample(
id number,
clob_field clob,
blob_field blob
);
insert into lob_sample(id) values(1);
代码:
这应该起作用,考虑将列变为CULB。< /P>
DECLARE
declare str tab1.report%type;
BEGIN
str:= to_blob(utl_raw.cast_to_raw('create or replace A_LONG_PROCEDURE...'));
UPDATE tab1 SET report=str
WHERE reference= 'TER';
commit;
end;
/
只是检查一下,我的答案是清楚的还是需要更多的解释?试试
declare str tab1.report%type
@FrankOckenfuss我得到一个错误的表达式类型,报告的列类型是blobstr:=to_blob('383838')代码>参见文档至至_blob
,输入为raw
类型。为什么使用blob而不是clob数据类型?@Frankockenfoss它不起作用,我是这样做的str:=to_blob(rawtohex('
),我得到了错误ora-06502数字或值错误:十六进制到原始转换错误你是说将str转换为clob?…你能举个例子吗
DECLARE
declare str tab1.report%type;
BEGIN
str:= to_blob(utl_raw.cast_to_raw('create or replace A_LONG_PROCEDURE...'));
UPDATE tab1 SET report=str
WHERE reference= 'TER';
commit;
end;
/