【问题标题】:Oracle update CLOB with varcharOracle 使用 varchar 更新 CLOB
【发布时间】:2010-11-03 04:21:24
【问题描述】:

我有一个表 TABLENAME,其 COLUMNNAME 数据类型是 CLOB。例如,它只包含 3 行 1st 行的 COLUMNNAME 值为 123,456,789,而 2nd NULL3rd 是一个空字符串

我有这个查询

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

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

如何解决?

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

【问题讨论】:

    标签: sql oracle oracle10g ora-00932


    【解决方案1】:

    首先,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 时会出现不兼容错误。

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多