Следующий PL-код/SQL ведет себя по-другому, если WHERE выглядит следующим образом:Проверьте строки существуют
WHERE USERNAME = 'aaaaaa'
и по-разному, если выглядит следующим образом:
WHERE USERNAME = userName
Почему результат не то же самое если userName := 'aaaaaa'
? Что я делаю не так? Спасибо!
declare
isFound NUMBER;
userName VARCHAR2(30);
begin
isFound := 0;
userName := 'aaaaaa';
SELECT COUNT(*)
INTO isFound
FROM MyTable
WHERE USERNAME = 'aaaaaa' -- userName
AND ROWNUM = 1;
IF isFound > 0 THEN
dbms_output.put_line('Found');
ELSE
dbms_output.put_line('Not found');
END IF;
end;
вы не можете wrrite ROWNUM = 1, а следует использовать ROWNUM <2 – Harshit
@Harshit - [да вы можете] (http://sqlfiddle.com/#!4/da67e/1); '1' - единственное значение, которое вы * можете * использовать' = 'с. 'rownum = 2' никогда не найдет никаких строк, потому что это неверно для первой найденной строки; но 'rownum = 1' * is * true для первой найденной строки (а не для второй), так что это нормально. Однако использование '<2' может сделать код более последовательным ... –
+1 для использования plsqldeveloper, но -1 для того, чтобы не использовать легкий легкий отладчик. –