Автор:Sergey Rigkov rijkov@mail.ru
В некоторых случаях необходимо узнать количество строк,
удовлетворяющих определенным условиям. Например, при создании
новой строки, необходимо проверить на уже существующую строку,
с определенным значением некоторого поля.
Можно конечно использовать
SELECT COUNT(*)
INTO :LL_COUNT
FROM TABLE_NAME
WHERE COLUMN_NAME=:ARG,
IF ll_Count > 0 THEN // Действия при наличии строки ...
но при этом, будет произведена выборка всех строк,
для которых выполнится условие WHERE и выполнится агрегация
Поэтому я советую использовать ROWNUM
SELECT TABLE_NAME_ID
INTO :LL_ID
FROM TABLE_NAME
WHERE COLUMN_NAME=:ARG
AND ROWNUM < 2
IF SQLCA.SQLNRows <> 0 THEN // Действия ...
Так Вы производите выборку, которая ограничится только одной
строкой, что иногда может существенно уменьшить количество
читаемых блоков ORACLE и при этом вы сразу получите
PK найденной записи