Có nhiều cách để làm cho việc này trở nên đơn giản và gọn gàng hơn, nhưng về cơ bản điều này nói lên kỹ thuật:
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
)
Khi phần đầu tiên của liên hợp trống, phần thứ hai sẽ chứa một hàng, khi phần đầu tiên không trống, phần thứ hai sẽ không chứa hàng.
Nếu truy vấn mất nhiều thời gian, hãy sử dụng truy vấn này:
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