Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

!! Decode con un tipo BLOB ¡¡

Estas en el tema de !! Decode con un tipo BLOB ¡¡ en el foro de Oracle en Foros del Web. Cordial saludo, Tengo el siguiente inconveniente, necesito averiguar en una tabla que tiene un campo BLOB por medio de un DECODE si el campo esta ...
  #1 (permalink)  
Antiguo 27/11/2007, 08:28
 
Fecha de Ingreso: mayo-2004
Ubicación: Manizales-Colombia
Mensajes: 97
Antigüedad: 20 años
Puntos: 0
Exclamación !! Decode con un tipo BLOB ¡¡

Cordial saludo,

Tengo el siguiente inconveniente, necesito averiguar en una tabla que tiene un campo BLOB por medio de un DECODE si el campo esta vacio o no...

por ejemplo:

select IDSECCION,NOMB_AREA,EXTENSION,
DECODE(ARCHIVO,
NOT NULL,'Si hay',
NULL, 'No hay') HOJAVIDA

from AREA_SECCION

pero no me funciona.... q estoy haciendo mal?? como es la forma correcta de hacerlo??


Gracias.
__________________
La vida es el presente, pero para
trabajar en su futuro... :cool:

Suerte y Pulso.... :cool:
  #2 (permalink)  
Antiguo 27/11/2007, 09:29
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
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
  #3 (permalink)  
Antiguo 27/11/2007, 12:49
 
Fecha de Ingreso: mayo-2004
Ubicación: Manizales-Colombia
Mensajes: 97
Antigüedad: 20 años
Puntos: 0
Re: !! Decode con un tipo BLOB ¡¡

Muchas gracias Matanga, me ha funcionado a la perfección.
__________________
La vida es el presente, pero para
trabajar en su futuro... :cool:

Suerte y Pulso.... :cool:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:45.