Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:Uzyskaj zapytanie, które zawsze zwraca dokładnie jeden wiersz, nawet jeśli nie ma danych do znalezienia

Istnieją sposoby, aby to uprościć i czystsze, ale to w zasadzie określa technikę:

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
)

Kiedy pierwsza część unii jest pusta, druga będzie zawierać wiersz, a kiedy pierwsza część nie jest pusta, druga nie będzie zawierać żadnych wierszy.

Jeśli zapytanie zajmuje dużo czasu, użyj tego:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zbyt długi identyfikator Fluent Nhibernate Oracle — problem z aliasem

  2. Błąd IO:Otrzymano minus jeden z wywołania odczytu

  3. SQL Wiersze do kolumn

  4. ORA-01618

  5. 12c kolumny TOŻSAMOŚĆ