Я пишу хранимую процедуру, в которой должно быть много условий. С учетом общих знаний из С#.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. Не уверен, что это имеет значение с использованием курсора, так как я не думаю, что могу DECLARE курсора в качестве выбора в FOR LOOP.