sql >> Base de Datos >  >> RDS >> Oracle

Oracle:obtenga una consulta para devolver siempre exactamente una fila, incluso cuando no se encuentren datos

Hay formas de hacer esto más simple y limpio, pero esto básicamente explica la técnica:

SELECT data_name
FROM data_table
WHERE data_table.type = v_t_id

UNION ALL

SELECT NULL AS data_name
FROM dual
WHERE NOT EXISTS (
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id
)

Cuando la primera parte de la unión está vacía, la segunda contendrá una fila, cuando la primera parte no esté vacía, la segunda no contendrá filas.

Si la consulta lleva mucho tiempo, utilice esta:

SELECT * FROM (  
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id

    UNION ALL

    SELECT NULL AS data_name
    FROM dual
  ) WHERE data_name is not null or ROWNUM = 1