0

COLUMNNAMEデータ型がCLOBのテーブルTABLENAMEがあります。たとえば、COLUMNNAME1行目が123,456,789、2行NULL3行目が空の文字列の 3 行のみが含まれています。

そして、私はこのクエリを持っています

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

このクエリを実行すると、ORA-00932: inconsistent datatypes: expected - got CLOBというエラー メッセージが表示されます。

それを修正する方法は?

Oracle Database 10g Enterprise Edition リリース 10.2.0.1.0 - 64 ビットを使用しています

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

文字列リテラルは、VARCHAR2 に適切に変換される CHAR として定義されますが、CLOB のように処理しようとすると非互換性エラーが発生します。

于 2010-11-03T05:24:58.950 に答える