Я пишу хранимую процедуру, в которой должно быть много кондиционирования. С учетом общих знаний из C# .NET кодирования, что исключения могут повредить производительность, я всегда избегал использования их в PL/SQL. Мой кондиционирования в этом хранимая процедура основном вращается вокруг того, существует ли или нет запись, которую я мог бы сделать один из двух способов:Oracle PL/SQL - Есть NO_DATA_FOUND Исключения плохо для производительности хранимой процедуры?
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.
Спасибо, Стив. См. Мое редактирование выше. Это имеет значение? – 2008-10-21 14:05:28
О, дух! Конечно, это сработает. Хорошо, нужно больше кофе. Благодарю. – 2008-10-21 14:07:43