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_STATELPAD 将“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;