游标中需要%NOTFOUND

时间:2009-09-02 09:05:37

标签: oracle plsql

任何人都可以告诉我%NOTFOUND运算符的用途是什么?

我们也可以在游标中使用“NOT%FOUND”。它将执行相同的功能。

2 个答案:

答案 0 :(得分:1)

有时只有一种方法可以做某件事。大多数开发人员倾向于使用%NOTFOUND(至少根据我的经验)。

修改

我不知道为什么PL / SQL语言的设计师给了我们%NOTFOUND。我会记得下次见到他时请问Bryn Llewellyn。但我的猜测是,他们只是认为它会有用。在编码中,与其他形式的写作一样,我们应该总是试图表达自己,因为积极性更清楚地表达了我们的意图。也就是说,

exit when c1%notfound;

更清楚

exit when not c1%found;

但也许这只是一种品味问题。

然而,%ISOPEN的情况要容易得多。我们没有使用%ISNOTOPEN运算符。我们有两次想要使用%ISOPEN。第一个是在光标可能已经打开的情况下打开游标之前(这应该是非常罕见的情况)。另一种是我们可能需要关闭一个打开的光标,比如在EXCEPTIONS块中。在这两种情况下,我们都有兴趣知道光标是OPEN。测试游标是否打开没有任何价值。

答案 1 :(得分:1)

与相关语言Ada和SQL一样,PL / SQL倾向于支持类似英语的结构(例如,您是否知道COMMIT命令有一个可选的“WORK”参数,它什么都不做?)

能够以自然的方式大声读出代码并不是一个糟糕的功能 - 即说“当找不到光标c1时退出”听起来比“没有找到光标时退出”听起来更自然一些。