2010-11-03 8 views
0

J'ai une table TABLENAME avec Columnname type de données est CLOB. Par exemple, il est contient seulement 3 lignes avec 1er rangée de Columnname valeur est et la 2ème est NULL et le est une chaîne videOracle mise à jour CLOB avec varchar

Et je cette requête

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

quand je lance cette requête, j'ai message d'erreur OU A-00932: types de données incohérents: attendus - obtenus CLOB

comment y remédier?

J'utilise Oracle Database 10g Enterprise Edition de presse 10.2.0.1.0 - 64bit

Répondre

2

Tout d'abord, TRIM (Columnname) = '' échouera toujours comme '' est NULL et ne soit pas compensée par une égalité.

Essayez d'utiliser 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; 
/

Une chaîne est définie comme une CHAR qui convertit bien à un VARCHAR2 mais par des erreurs d'incompatibilité lorsque vous essayez de le traiter comme un CLOB.

Questions connexes