Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/11/2007, 09:29
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Re: !! Decode con un tipo BLOB ¡¡

Hola,

El error se da porque DECODE espera como parametro de entrada un tipo de dato caracter, como por ejemplo varchar2 o char. Una opcion es utilizar las funciones NVL o NVL2 pero si el valor del campo LOB supera los 4k se generara una excepcion.

La forma correcta de operar con LOBs es utilizando el package DBMS_LOB, para este caso, la funcion GETLENGTH

Código:
SQL> desc t1;
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------

 ID                                                 NUMBER
 DATA                                               CLOB

SQL> select * from t1;

        ID DATA
---------- --------------------
         1 data 1
         1

SQL> select id, dbms_lob.GETLENGTH(data) from t1;

        ID DBMS_LOB.GETLENGTH(DATA)
---------- ------------------------
         1                        6
         1

SQL> select id,data, nvl2(dbms_lob.GETLENGTH(data),'Si hay','No Hay') from t1;

        ID DATA                 NVL2(D
---------- -------------------- ------
         1 data 1               Si hay
         1                      No Hay
Por otro lado NOT NULL no es una opcion valida en el DECODE.

Saludos