【发布时间】:2016-07-19 16:23:33
【问题描述】:
这是我的线索... 我在oracle 11g上。搜索了很多,但没有找到。
我需要执行 DML 操作,其中可以包含 > 4k 个字符的数据。
如果我直接在 oracle 中使用 sql 块,就像下一个一样,一切正常
declare
txtV varchar2(32000);
BEGIN
txtV:= 'MORE THAN 4k CHARS, here only few for readability' ;
Update FD_FILTERDEF
set SQLFILTER = txtV
where id='blabla';
END;
但是!!!
如果我使用合并语句,它会给我错误ORA-01461
declare
txtV varchar2(32000);
BEGIN
txtV:= '' ;
MERGE INTO FD_FILTERDEF A
USING ( select txtV C0
from dual) ST
ON (A.CODE = 'bla bla')
WHEN MATCHED THEN
Update set A.SQLFILTER = st.C0
WHEN NOT MATCHED THEN
insert (CODE ,SQLFILTER )
values ('bla bla' , ST.C0 );
END;
如果有一些提示将不胜感激:)
【问题讨论】:
-
请出示您的表格定义
-
fd_filterdef.sqlfilter的类型是什么?clob可能吗? -
FD_FILTERDEF.SQLFILTER 是一个 CLOB 列
标签: oracle plsql oracle11g merge ora-01461