所以我正在使用 Oracle APEX,我正在尝试创建一个动态值列表。假设我有一个名为“设备”的表,其中两列是“ID”和“数量”。
我有一个表单,用户可以在其中选择一个设备,并从那里我试图获取下一个表单字段以返回该设备数量的值列表加上减去 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
所以这只是返回一个只有一个值的 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