Er zijn manieren om dit eenvoudiger en schoner te maken, maar dit beschrijft in feite de techniek:
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
)
Als het eerste deel van de unie leeg is, bevat het tweede een rij, als het eerste deel niet leeg is, bevat het tweede geen rijen.
Als de zoekopdracht te veel tijd kost, gebruik dan deze:
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