【发布时间】:2011-01-13 16:59:08
【问题描述】:
我有一个这样的查询:
select data_name
into v_name
from data_table
where data_table.type = v_t_id
通常,此查询应该只返回一行。当v_t_id 上没有匹配项时,程序将失败并出现“未找到数据”异常。
我知道我可以在 PL/SQL 中处理此问题,但我想知道是否有办法仅在查询中执行此操作。作为测试,我尝试过:
select case
when subq.data_name is null then
'UNKNOWN'
else
subq.data_name
end
from (select data_name
from data_table
where data_table.type = '53' /*53 does not exist, will result in 0 rows. Need fix this...*/
) subq;
...但这显然行不通(因为subq 为空与subq.data_name is null 不同)。这甚至可能吗,还是我应该只签入我的 PL/SQL 解决方案?
(甲骨文 10g)
【问题讨论】:
-
如果查询不返回任何行,您期望/希望 data_name 具有什么值?这是处理未找到数据情况的挑战。
-
@Thomas:字符串“UNKNOWN”在这种情况下可以正常工作。