Мне нужна процедура sq sql, которая выводит все книги в базе данных, которые отвечают определенным критериям. Я запускаю его и выводя правильные значения, однако он всегда оставляет 1 набор значений. Например, если я запустил его с определенными ограничениями, которые вернут 10 книг, моя процедура покажет только 9. И это всегда будет книга, которая была бы в нижней части списка. Любая помощь приветствуется.PL/SQL курсор для цикла делает 1 слишком мало циклов
create or replace procedure which_titles(quant_limit number, price_limit number) as
begin
for next_title in (select *
from title)
loop
IF next_title.qty_on_hand <= quant_limit
and next_title.title_price <= price_limit THEN
dbms_output.put_line(next_title.title_name || ' - ' || next_title.qty_on_hand || ' - ' || next_title.title_price);
END IF;
end loop;
end;
/
show errors
Утверждение 'IF' не требуется. Используйте 'select * from title, где qty_on_hand <= quant_limit и title_price <= price_limit', и посмотрите, сколько строк оно возвращает – GurV
Почему вы не делаете фильтрацию внутри запроса курсора? Это было бы более эффективно, но вам было бы проще выполнить один и тот же запрос автономно и выяснить, почему он не делает то, что вы ожидаете. Вы увидите, что вы получите только 9 строк. Цикл не пропускает один, но ваш 'if' может быть исключен. Без данных и параметров мы не можем сказать, где ваша ошибка. –
В этом цикле нет ничего, что могло бы вызвать такую ошибку «по очереди»; поэтому я подозреваю, что в данных есть что-то, что вызывает эту проблему. Измените свой вопрос, чтобы включить образец данных, включая все соответствующие поля (QTY_ONHAND, TITLE_PRICE, TITLE_NAME). Благодарю. –