如何编写从复选框中获取值并将其作为不同列插入 table 的脚本?

How to write the script that takes values from a checkbox and inserts it as different columns in a table?

我有一个用于在 Oracle Apex 中创建新事件的表单。使用该表格,我可以很好地创建新事件。但在该表格的底部是一个复选框,用户可以在其中指定参与组织活动的俱乐部。

您可以在上图底部看到的复选框的值列表设置为 sql 查询,其中 selects 'club_name' 和 'club_id' 来自 'club' table.

现在我要做的是在成功创建事件后,需要将具有新创建事件 ID 的选中俱乐部的 club_id 插入到 'club_event' 连接点 table 将每个事件与其组织的俱乐部联系起来。所以我需要创建一个页面进程,将记录插入连接 table。我尝试在 select "Processing".

之后出现的页面设计器的 "Server-side Condition" 部分编写脚本

DECLARE
    type idarray IS VARRAY(10) OF VARCHAR2(10);
    ids idarray;
BEGIN
    ids := apex_string.split(:P72_CLUBS, ':');
    FOR id IN ids LOOP
        INSERT INTO club_event
        VALUES(id, P72_EVENT_ID);
    END LOOP;
END;

这就是用页面进程做我想做的事情的方式吗?我的脚本有什么问题,我该如何解决?

"server side condition" 是顶点组件上的一个属性,用于确定是否需要执行该组件。在您的情况下,您已经有了 "When button pressed" 条件,因此您可以将 "Type" 留空。 页面进程中需要执行的代码应该放在"Source"中,如下所示。

你的代码没有执行 - 我建议你在 sql workshop 中尝试找出问题所在(多个错误,我在这里不做详细说明)。我通常使用这样的东西:

DECLARE
    l_ids apex_t_varchar2;
BEGIN
    l_ids := apex_string.split(:P72_CLUBS, ':');
    FOR i IN 1 .. l_ids.COUNT LOOP
      INSERT INTO club_event 
        VALUES(l_ids(i), :P72_EVENT_ID);
    END LOOP;
END;
/