Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:ottieni una query per restituire sempre esattamente una riga, anche quando non ci sono dati da trovare

Ci sono modi per renderlo più semplice e pulito, ma in pratica questo spiega la tecnica:

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
)

Quando la prima parte dell'unione è vuota la seconda conterrà una riga, quando la prima parte non è vuota, la seconda non conterrà righe.

Se la query richiede molto tempo, usa questa:

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