2011-10-31 50 views
0
SELECT NVL(FIELD1,0),NVL(FIELD2,0) 
    INTO var1, var2 
    FROM TABLEONE 
    WHERE SomeField_ID = 11111 
    AND SomeOtherFieldID in (1,2) 
    AND SomeStatusID in (250,360) 

这是在触发器内,我没有找到数据发现错误。 nvl不应该在两个变量上都替换为0吗?如果找不到记录,我该如何替换0?Oracle - 没有找到数据错误和使用查询与NVL

我感谢您的帮助。

+0

好吧,所以我做了一个计数,然后如果计数为0,然后手动分配两个变量为0.谢谢! – kalls

回答

3

你得到一个no data found因为您的查询没有返回不是nvl调用的,因为任何行,...

nvl将表现为你正确地预期:

if field1 == Null: 
    return 0 
else: 
    return field1 

where条款可能会过滤所有行。

WHERE SomeField_ID = 11111 
AND SomeOtherFieldID in (1,2) 
AND SomeStatusID in (250,360) 
+0

我会用count来做操作。谢谢! – kalls

+1

您也可以使用例外(防止额外计数)。 –

+0

是的。我会使用异常! – kalls