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

verificar si un valor existe a través de un IF

Estas en el tema de verificar si un valor existe a través de un IF en el foro de Oracle en Foros del Web. estoy intentando hacer una condicion en donde; si el valor en la tabla no existe, entra, sino, siguiente condicion... algo asi como @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 31/01/2012, 11:57
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 14 años, 5 meses
Puntos: 6
verificar si un valor existe a través de un IF

estoy intentando hacer una condicion en donde; si el valor en la tabla no existe, entra, sino, siguiente condicion...

algo asi como

Código SQL:
Ver original
  1. SELECT dato_1 INTO aux FROM TABLA
  2. WHERE
  3.    dato_1 = "nombre_1";
  4.  
  5. IF aux = 'null' THEN    
  6.   -- hago algo
  7. ELSE
  8.    ---hago algo
  9. END IF;

el problema del codigo es que no me acepta NULL en la condicion para indicar que esta vacio, ni tampoco ''

sin embargo, me arroja el sgte error:

ORA-01403: No se ha encontrado ningún dato

Como puedo lograr esto???

ojala me puedan ayudar,
desde ya muchas gracias!!
Saludos!

*****************
me di cuenta que la sentencia es IS NULL en la condicion...
pero aun asi, no entra en la condicion, sigue arrojando el mismo error en el select, ahora queda como:

Código SQL:
Ver original
  1. SELECT dato_1 INTO aux FROM TABLA
  2. WHERE
  3.    dato_1 = "nombre_1";
  4.  
  5. IF aux IS NULL THEN    
  6.    -- AQUI ES DONDE NO ENTRA, MANDA INMEDIATAMENTE EL ERROR DESPUES DEL SELECT
  7. ELSE
  8.    ---hago algo
  9. END IF;

ojala me puedan ayudar,
saludos!

Última edición por ras_chalo; 31/01/2012 a las 12:26
  #2 (permalink)  
Antiguo 31/01/2012, 21:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: verificar si un valor existe a través de un IF

No puedes asignar a una variable una consulta que no retorna registros. para hacer lo que quieres puedes controlar la excepción con un bloque anonimo interno.

Código SQL:
Ver original
  1. BEGIN
  2.    SELECT dato_1 INTO aux FROM TABLA  
  3.     WHERE
  4.      dato_1 = "nombre_1";
  5.  
  6. --si no se revienta, aca hace algo
  7. EXCEPTION WHEN NO_DATA_FOUND THEN
  8. --si no encuentra datos, haces lo que querias hacer con la condicion IF variable is null
  9. END
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 01/02/2012, 07:31
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: verificar si un valor existe a través de un IF

Cita:
Iniciado por huesos52 Ver Mensaje
No puedes asignar a una variable una consulta que no retorna registros. para hacer lo que quieres puedes controlar la excepción con un bloque anonimo interno.

Código SQL:
Ver original
  1. BEGIN
  2.    SELECT dato_1 INTO aux FROM TABLA  
  3.     WHERE
  4.      dato_1 = "nombre_1";
  5.  
  6. --si no se revienta, aca hace algo
  7. EXCEPTION WHEN NO_DATA_FOUND THEN
  8. --si no encuentra datos, haces lo que querias hacer con la condicion IF variable is null
  9. END
Muchas gracias amigo!!
acabo de aprender algo nuevo :P

y por cierto, funciono perfectamente!
Saludos y muchas gracias nuevamente
  #4 (permalink)  
Antiguo 01/02/2012, 22:43
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Respuesta: verificar si un valor existe a través de un IF

Tienes varias opciones para validar si existe un registro, no hay mucha diferencia en rendimiento, es más una cuestión de gusto.

1. Como comenta huesos52, utilizar excepciones.

2. Hacer un count

Código:
select count(dato_1) into aux2 
 from tabla
 where dato_1 = "nombre_1";
 if aux2 > 0 then
 --el registro existe
 end if;
3. Hacer un cursor for loop

Código:
for cur in (select dato_1 from tabla
                where dato_1 = "nombre_1") loop
 --el registro existe
end loop;
Saludos

Etiquetas: select, tabla, verificar
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 03:26.