【发布时间】:2021-10-13 23:32:52
【问题描述】:
我正在尝试使用重复行为我的 oracle apex 应用程序创建一个功能。假设我有一个车辆桌。
CREATE TABLE vehicles
(
brand VARCHAR2(50),
model VARCHAR2(50),
comment VARCHAR2(50)
);
我首先创建了一个当前正在运行的 PL/SQL 过程,它复制了用户选择的行 n 次。例如,如果用户有 5 辆相同的车辆,他可以输入“5”,应用程序将插入 5 次相同的车辆,当然主键不同。
我想要实现的是让用户可以在每一行上添加自定义评论。例如,他有 5 辆相同的汽车,每辆都有不同的评论。
这是用户插入汽车时我的程序代码:
FOR i IN 1..:P27_NUMBER_VEHICLES -- this represents the numbers of cars the users want to insert
LOOP
INSERT INTO vehicles(brand, model)
VALUES(:P27_BRAND, :P27_MODEL);
END LOOP;
END;
这会创建 5 辆相同的车辆,但我希望用户能够在每辆车辆上添加 5 个不同的 cmets,这里是 an example of my insertion form,评论字段根据用户想要插入的数字动态显示
我现在尝试使用注释更新我的程序,我尝试给出一个可以由程序动态更改的名称,我将其命名为:P27_COMMENT_0 / 1 / 2 / 3 / 4 / 5。所以我尝试了添加:P27_COMMENT_ || i(循环的索引)尝试自动浏览不同的字段,这是代码:
BEGIN
FOR i IN 1..:P27_NUMBER_VEHICLES
LOOP
INSERT INTO vehicles(brand, model, comment)
VALUES(:P27_BRAND, :P27_MODEL, :P27_COMM_ || i);
END LOOP;
END;
不幸的是,这不起作用。
我希望你们能为我提供解决方案。总结一下,我试图用循环复制一行,但仍然能够为特定列上的每个条目添加一个自定义条目。
不要犹豫,询问更多细节,因为我可能忘记了一些重要的事情。
提前谢谢你,
托马斯
更新
这是它的显示方式,我不能在上面写任何东西:
【问题讨论】:
-
如何动态生成P27_COMM项目,使用APEX_ITEM吗?
-
我已经把它变得不那么复杂了,插入最多 10 个项目,所以有 10 个 cmets 字段。这些字段是隐藏的,除非它们满足要求的条件,即:P27_NUMBER_VEHICLE >= 1/2/3/4/..../10。因此,如果用户选择插入 4 个项目,页面上将出现前 4 个评论字段。
-
那么你不能循环浏览你的项目。提交每个项目,检查它是否不为空,如果满足条件,则进行插入。顺便说一句,检查你的模型不确定你是否想要所有这些重复。
-
好的,我明白了,谢谢你的回答,如果我的物品是用 APEX_ITEM 动态生成的,你还有其他解决方案吗?
-
是的,我愿意......
标签: oracle loops plsql oracle-apex procedure