tengo una consulta como esta:Oracle: Obtenga una consulta para devolver siempre exactamente una fila, incluso cuando no hay datos que se encuentran
select data_name
into v_name
from data_table
where data_table.type = v_t_id
Normalmente, esta consulta debe devolver exactamente una fila. Cuando no hay coincidencia en v_t_id
, el programa falla con una excepción "No se encontraron datos".
Sé que podría manejar esto en PL/SQL, pero me preguntaba si hay una manera de hacer esto solo en una consulta. Como prueba, he intentado:
select case
when subq.data_name is null then
'UNKNOWN'
else
subq.data_name
end
from (select data_name
from data_table
where data_table.type = '53' /*53 does not exist, will result in 0 rows. Need fix this...*/
) subq;
... pero esto, evidentemente, no va a funcionar (porque subq
estar vacía no es lo mismo que subq.data_name is null
). ¿Es esto posible o debería simplemente verificar mi solución PL/SQL?
(Oracle 10g)
¿Qué valor se puede esperar/quiere DATA_NAME a tener si la consulta no devuelve ninguna fila? Este es el desafío de lidiar con una condición sin datos encontrados. –
@Thomas: la cadena "DESCONOCIDO" funcionaría bien en este escenario. – FrustratedWithFormsDesigner