每当在PL/SQL中编写查询时,只需要一行,通常有两种方法可以完成:
- 使用隐式
SELECT INTO
,并检查TOO_MANY_ROWS
和NO_DATA_FOUND
异常。 - 使用显式游标,只需从游标中获取第一行。
尽管这两种方法产生相同的结果,但这些方法的优缺点是什么?
当 select 语句预期只返回一行时,"SELECT INTO"是更好的方法。 是的,许多开发人员更喜欢使用游标并只获取一行,因为这为他们节省了处理NO_DATA_FOUND的"麻烦" - 即他们将问题扫到地毯下并给用户留下一个神秘的错误。 我最近在博客上写了关于这种不良做法*的文章。
(*一个不好的做法,经常被遗憾地载入PL/SQL项目标准!)
至于计数然后查询,那只会使工作量加倍,因此也要避免。