Самый эффективный и безопасный способ определить, существует ли строка, - это использовать FOR-LOOP ...
У вас даже не будет трудного времени, если вы хотите вставить строку или сделать что-то, основываясь на том, что строки НЕ там, но это, безусловно, поможет вам, если вам нужно определить, существует ли строка. См. Пример кода ниже для входов и выходов ...
Если вас интересует только то, что в вашем потенциальном множественном множестве возвратов существует 1 запись, вы можете выйти из цикла после того, как он попадет в него в первый раз.
Цикл вообще не будет введен, если записи не существует. Вы не будете получать жалобы от Oracle или тому подобное, если строка не существует, но вы обязательно узнаете, есть ли она независимо. Это то, что я использую 90% времени (конечно, в зависимости от моих потребностей) ...
ПРИМЕР:
DECLARE
v_exist varchar2(20);
BEGIN
FOR rec IN
(SELECT LOT, COMPONENT
FROM TABLE
WHERE REF_DES = (SELECT REF_DES FROM TABLE2 WHERE ORDER = '1234')
AND ORDER = '1234')
LOOP
v_exist := "IT_EXISTS"
INSERT INTO EAT_SOME_SOUP_TABLE (LOT, COMPONENT)
VALUES (rec.LOT, rec.COMPONENT);**
--Since I don't want to do this for more than one iteration (just in case there may have been more than one record returned, I will EXIT;
EXIT;
END LOOP;
IF v_exist IS NULL
THEN
--do this
END IF;
END;
- Это за пределами цикла прямо здесь IF-CHECK чуть выше будет работать независимо, но тогда вы узнаете, является ли ваша переменная нулевой или неправильной!?. Если не было возвращено ни одной записи, он пропустит цикл и просто перейдет к следующему коду ... Если (в нашем случае выше) было возвращено 4 записи, я бы завершил работу после первой итерации из-за моего выхода. ; ... Если бы этого не было, то 4 записи прошли бы итерацию и вставили бы все из них. Или хотя бы попробуй тоже.
Кстати, я не говорю, что это единственный способ, которым вы должны подумать об этом ... Вы можете
SELECT COUNT(*) INTO v_counter WHERE ******* etc...
Тогда отметьте это как
if v_counter > 0
THEN
--code goes here
END IF;
Есть и другие способы ... Просто определите, когда возникнет ваша потребность. Помните о производительности и безопасности.