Я пишу хранимую процедуру, в которой должно быть много условий. Обладая общими знаниями кодирования на 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 (*), я не возражаю, если наберу немного больше, чтобы увеличить скорость обработки.
Есть намеки? Я упускаю другую возможность?
EDIT
Я должен был упомянуть, что все это уже вложено в цикл FOR LOOP. Не уверен, имеет ли это значение при использовании курсора, так как я не думаю, что смогу ОБЪЯВИТЬ курсор как выбор в FOR LOOP.