Oracle Apex - 循环项目
Posted
技术标签:
【中文标题】Oracle Apex - 循环项目【英文标题】:Oracle Apex - Loop Items 【发布时间】:2022-01-17 00:34:51 【问题描述】:我有一个表单,用户可以在其中为客户添加记录,问题是,每个客户可以有多个产品。 我的插入(记录)过程基本上检查是否在产品项目上添加了信息并循环必要的次数,例如: 用户添加客户 ABCDE 并选择 2 个产品,客户 ABCDE 的 2 条记录将与 2 个新产品一起插入。 问题是我无法让 Apex 插入这两种产品。我有这样的事情:
LOOP
V_COUNTER := V_COUNTER + 1;
EXIT WHEN V_COUNTER > V_AMOUNT_OF_PRODUCTS_COUNTER;
INSERT INTO MY_TABLE (CUSTOMER, PRODUCT)
VALUES (:P2_MY_TEXT_CUSTOMER_ITEM, :P2_PRODUCT_||V_COUNTER);
END LOOP;
如果用户添加了 3 个产品: 结果:3行具有相同(第一项)产品名称的同一客户 期望的结果:3 行相同的产品,产品分别为 :P2_PRODUCT_1、:P2_PRODUCT_2 和 :P2_PRODUCT_3。
谢谢
【问题讨论】:
【参考方案1】:绑定变量不能在 pl/sql 代码块中以声明方式命名,但您可以将它们作为参数传递给函数 APEX_UTIL.GET_SESSION_STATE
。 LPAD
将“1”转换为“01”。
所以你的代码将是(未经测试的):
LOOP
V_COUNTER := V_COUNTER + 1;
EXIT WHEN V_COUNTER > V_AMOUNT_OF_PRODUCTS_COUNTER;
INSERT INTO MY_TABLE (
CUSTOMER,
PRODUCT)
VALUES (
:P2_MY_TEXT_CUSTOMER_ITEM
,apex_util.get_session_state (p_item => 'P2_PRODUCT'||'_'||LPAD(V_COUNTER,2,'0')));
END LOOP;
或使用 for 循环:
FOR r IN 1 .. V_AMOUNT_OF_PRODUCTS_COUNTER LOOP
INSERT INTO MY_TABLE (
CUSTOMER,
PRODUCT)
VALUES (
:P2_MY_TEXT_CUSTOMER_ITEM
,apex_util.get_session_state (p_item => 'P2_PRODUCT'||'_'||LPAD(r,2,'0')));
END LOOP;
【讨论】:
谢谢!以前从未听说过,谢谢! 很高兴为您提供帮助以上是关于Oracle Apex - 循环项目的主要内容,如果未能解决你的问题,请参考以下文章
ORACLE apex - 使用 PL/SQL 循环通过复选框项目