Oracle - 未找到数据错误和使用 NVL 的查询

发布于 2024-12-13 08:12:13 字数 293 浏览 3 评论 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?

我很感激你的帮助。

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)

This is inside a trigger and I am getting no data found error. Shouldn't the nvl substitute 0 on both variables? How can I substitute 0 if the records are not found?

I appreciate your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千里故人稀 2024-12-20 08:12:13

您收到找不到数据是因为您的查询未返回任何行,而不是由于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)

You are getting a no data found because your query is not returning any rows, not because of the nvl invocation...

nvl will behave as you are correctly expecting:

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

Your where clause is probably filtering all rows.

WHERE SomeField_ID = 11111
AND SomeOtherFieldID in (1,2)
AND SomeStatusID in (250,360)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文