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

djmepvbi  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(404)

我有一个在oracle apex中创建新事件的表单。有了这种形式,我就可以创造新的事件很好。但是在表单的底部有一个复选框,用户可以在其中指定参与组织活动的俱乐部。

您可以在上图底部看到的复选框的值列表被设置为sql查询,该查询从“club”表中选择“club\u name”和“club\u id”。

现在我要做的是,在成功创建事件之后,需要将选中的俱乐部的俱乐部id与新创建的事件的id插入到“俱乐部事件”连接表中,该连接表将每个事件与其组织俱乐部相关联。所以我需要创建一个页面进程,将记录插入到连接表中。我尝试在页面设计器的“服务器端条件”部分编写一个脚本,该部分在我选择“处理”后出现。

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;

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

11dmarpk

11dmarpk1#

“服务器端条件”是apex组件上的一个属性,用于确定是否需要执行该组件。在你的情况下,你已经有一个“当按钮按下”的条件,所以你可以留下“类型”为空。需要在页面进程中执行的代码应该放在“源代码”中,如下所示。

您的代码无法执行-我建议您在sql研讨会中尝试一下,找出错误所在(多个错误,这里不详细介绍)。我通常用这样的方法:

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;
/

相关问题