0

我有一个表TABLENAMECOLUMNNAME数据类型是CLOB。例如,它只包含 3 行,第一行的COLUMNNAME值为123,456,789第二行是NULL第三行是空字符串

我有这个查询

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

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

如何解决?

我使用 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit

4

1 回答 1

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;
/

字符串文字被定义为 CHAR,它可以很好地转换为 VARCHAR2,但是当您尝试将其视为 CLOB 时会出现不兼容错误。

于 2010-11-03T05:24:58.950 回答