私はOracle APEXを使用しており、値の動的リストを作成しようとしています。たとえば、"Device" というテーブルがあり、2 つの列が "ID" と "Quantity" であるとします。
ユーザーがデバイスを選択できるフォームがあり、そこから次のフォームフィールドを取得して、そのデバイスの数量と 1 を引いた値のリストを 0 より大きくならないようにしようとしています...基本的に:
WHILE quantity > 0
LOOP
quantity := quantity - 1;
つまり、デバイス iPad を選択し、その数量が 3 の場合、値のリスト (3、2、1) が作成されます。現在、数量番号自体を取得するために、この LOV クエリが機能しています。
select distinct quantity d, quantity r
from device
where device.id = :P2_DEVICEID
order by 1
したがって、これは、選択したデバイスの数量である 1 つの値のみを含む LOV を返します (注: P2_DEVICEID は「カスケーディング LOV 親アイテム」であるため、誰かがドロップダウン LOV からフォームでデバイスを選択すると、更新されます誰かがデバイス フィールドに選択したオプションに基づく数量 LOV)
しかし、ええ、私はこれとこれの変種を試しましたが、エラーが発生し続けます
WHILE quantity > 0
LOOP
select distinct quantity d, quantity r
from device
where device.id = :P2_DEVICEID
update quantity := quantity - 1;
END LOOP;
order by 1
これは上記のエラーでした:
「ページ アイテム P2_DEVICEQUANTITY のレンダリング中にエラーが発生しました。ORA-06550: 6 行目、24 列目: PL/SQL: ORA-00933: SQL コマンドが正しく終了していません ORA-06550: 4 行目、1 列目: PL/SQL: SQL ステートメントは無視されました ORA -06550: 行 9、列 1: PLS-00103: 次のいずれかを予期しているときに、シンボル "ORDER" が検出されました: ( begin case declare end exception exit for goto if loop mod null pragma raise return select update while with