【发布时间】:2010-09-18 07:49:04
【问题描述】:
我正在编写一个需要在其中进行大量调节的存储过程。根据 C#.NET 编码的一般知识,异常会损害性能,我也一直避免在 PL/SQL 中使用它们。我在这个存储过程中的调节主要围绕是否存在记录,我可以通过以下两种方式之一进行:
SELECT COUNT(*) INTO var WHERE condition;
IF var > 0 THEN
SELECT NEEDED_FIELD INTO otherVar WHERE condition;
....
-或-
SELECT NEEDED_FIELD INTO var WHERE condition;
EXCEPTION
WHEN NO_DATA_FOUND
....
第二种情况对我来说似乎更优雅一些,因为这样我就可以使用 NEEDED_FIELD,我必须在第一种情况下的条件之后的第一个语句中选择它。更少的代码。但是如果使用 COUNT(*) 存储过程会运行得更快,那么我不介意多输入一点来弥补处理速度。
有什么提示吗?我错过了另一种可能性吗?
编辑 我应该提到这一切都已经嵌套在 FOR LOOP 中。不确定这是否对使用游标有影响,因为我认为我不能将游标声明为 FOR LOOP 中的选择。
【问题讨论】:
标签: sql oracle exception plsql