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