我收到以下查询的ORA-01403: no data found
异常。这一错误的可能性是什么?
SELECT trim(name)
INTO fullname
FROM ( SELECT n.name
FROM directory dir, store n
WHERE dir.name = n.name
AND dir.status NOT IN ('F', 'L', 'M')
ORDER BY n.imp, dir.date)
WHERE rownum <= 1;
我如何处理此错误?
5条答案
按热度按时间vpfxa7rd1#
尽管您已经设置了WHERE条件,但更好的方法是处理未找到记录或‘未找到数据’错误。我会用
SELECT
语句自己的BEGIN/EXCEPTION/END
块 PackageSELECT
语句来编写上面的代码。代码可能如下所示:
ukdjmx9f2#
如果SanDeep描述的标准异常处理似乎开销很大(就像我的例子一样),而您使用
NULL
或某个个人*<未找到>*值就可以了,您可以这样转换它:=>否ORA-01403已提出:
rggaifut3#
可能是因为您的查询
不返回任何行
oug3syen4#
如果
dir.status
在您的表中有任何空值,则not in
可能没有执行您认为的操作。即使您认为应该获得一行或多行,也可能会得到零行。您可以切换到and not (dir.status in ('F,'L','M'))
,而不是dir.status not in ('F','L','M')
。参考this。
mfuanj7w5#
忘掉例外吧..。只需使用DUAL表即可:
B-)这样,如果您的查询没有返回任何内容,变量将用NULL填充。