多くの条件付けが必要なストアド プロシージャを作成しています。例外がパフォーマンスを低下させる可能性があるという C#.NET コーディングの一般的な知識があるため、PL/SQL でも例外を使用することは常に避けてきました。このストアド プロシージャの条件付けは、主にレコードが存在するかどうかを中心に展開します。これは、次の 2 つの方法のいずれかで実行できます。
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
....
2 番目のケースは、最初のケースの条件の後の最初のステートメントで選択する必要があった NEEDED_FIELD を使用できるため、もう少しエレガントに思えます。コードが少ない。しかし、ストアド プロシージャが COUNT(*) を使用してより高速に実行される場合は、処理速度を補うためにもう少し入力してもかまいません。
ヒントはありますか?私は別の可能性を見逃していますか?
編集 これはすべてすでにFOR LOOPにネストされていることに言及する必要がありました。FOR LOOPで選択としてカーソルを宣言できるとは思わないため、これがカーソルを使用することで違いを生むかどうかはわかりません。