Oracle Apex - 循环项
Oracle Apex - Loop Items
我有一个用户可以为客户添加记录的表单,问题是每个客户可以有多个产品。
我的插入(记录)过程基本上检查是否在产品项目上添加了信息并循环了必要的次数,例如:
用户添加客户 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.
谢谢
绑定变量不能在 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;
我有一个用户可以为客户添加记录的表单,问题是每个客户可以有多个产品。 我的插入(记录)过程基本上检查是否在产品项目上添加了信息并循环了必要的次数,例如: 用户添加客户 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.
谢谢
绑定变量不能在 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;