Oracle - 没有数据发现错误和使用NVL的查询

时间:2011-10-31 17:53:56

标签: sql oracle oracle10g oracle11g

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?

感谢您的帮助。

1 个答案:

答案 0 :(得分: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)