用于循环的PL / SQL游标执行的循环太少

时间:2017-02-05 09:55:57

标签: sql oracle plsql

我需要一个pl sql过程来输出符合特定条件的数据库中的所有书籍。我已经让它运行并输出正确的值,但它总是会关闭一组值。例如,如果我使用某些可以返回10本书的约束来运行它,我的程序只会显示9.而且它始终是列在列表底部的书。任何帮助表示赞赏。

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

1 个答案:

答案 0 :(得分:1)

根据发布的代码。好像没问题。只有在需要修改的代码中有一些冗余。另外,秘密主要在于SELECT Query。因此,使用过程外的实际输入运行select查询。您将明确地解决您的查询。

希望这有帮助。

CREATE OR REPLACE
procedure which_titles(
    quant_limit IN  NUMBER,
    price_limit IN  NUMBER)
AS
BEGIN
  FOR next_title IN
  (SELECT         *
  FROM title
  WHERE title.qty_on_hand <= quant_limit
  AND title.title_price   <= price_limit
  )
  LOOP
    dbms_output.put_line(next_title.title_name || ' - ' || next_title.qty_on_hand || ' - ' || next_title.title_price);
  END LOOP;
END;
/