2010-11-03 54 views
0

甲骨文更新CLOB我有一个表TABLENAMECOLUMNNAME数据类型为CLOB。例如它仅包含3行与第一排的COLUMNNAME123,456,789第二NULL和是一种空字符串用VARCHAR

而且我有这个疑问

UPDATE TABLENAME 
    SET COLUMNNAME = COLUMNNAME || CASE 
            WHEN TRIM(COLUMNNAME) = '' OR COLUMNNAME IS NULL THEN 
             '098765' 
            ELSE ',098765' 
            END 

当我运行此查询时,我收到错误消息或A-00932:不一致的数据类型:预计 - 得到CLOB

如何解决?

我使用Oracle数据库10g企业版发布10.2.0.1.0 - 64位

回答

2

首先,TRIM(COLUMNNAME)=“”总是失败,因为“”为NULL,并且没有得到一个等号匹配。

尝试使用PL/SQL:

declare 
    v_clob clob := ',098765'; 
begin 
update t 
set val = val || v_clob 
where val is not null; 
-- 
UPDATE T 
SET val = '098765' 
WHERE val is null; 
-- 
end; 
/

字符串文字被定义为当你试图把它像一个CLOB这很好地转换成VARCHAR2而是通过不兼容的错误一个CHAR。