-1
特定の基準を満たすデータベース内のすべての書籍を出力するpl 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 where qty_on_hand <= quant_limitとtitle_price <= price_limit'を使用して、返す行の数を確認してください – GurV
なぜカーソルクエリ内でフィルタリングを行っていませんか?より効率的ですが、同じクエリをスタンドアロンで実行して、それがあなたが期待していることをしていない理由を理解することも簡単になります。あなたは9行だけ戻ってくるのを見るでしょう。ループにはループがありませんが、 'if'がそれを除外している可能性があります。データとパラメータがなければ、あなたの間違いがどこにあるのかはわかりません。 –
このループには、このような「オフ・バイ・ワン」エラーの原因となるものはありません。したがって、私はこの問題の原因となっているデータに何かがあると思われます。質問を編集して、関連するすべてのフィールド(QTY_ONHAND、TITLE_PRICE、TITLE_NAME)を含むデータのサンプルを含めてください。ありがとう。 –