【问题标题】:How to get the values of a checkbox in after trigger in PL/SQL?如何在 PL/SQL 中的触发器后获取复选框的值?
【发布时间】:2020-05-19 10:33:34
【问题描述】:

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

您可以在上图底部看到的复选框的值列表设置为从“club”表中选择“club_name”和“club_id”的 sql 查询。

现在我想做的是在成功创建事件后,需要将带有新创建事件的 id 的已检查俱乐部的 club_id 插入到将每个事件与其组织俱乐部相关联的“club_event”连接表中.因此,为此我想到了在事件表上创建后触发器。但是我找不到如何访问在 plsql 代码中选择的俱乐部的 ID。所以我的问题是我是如何做到的,我将活动与组织俱乐部联系起来的方法是否很好?谢谢你。

根据“Koen”的建议,我尝试通过“Process”来实现它。但我在使我的脚本工作时遇到问题。

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;

我做错了什么,我该如何解决?

【问题讨论】:

    标签: sql oracle plsql oracle-apex


    【解决方案1】:

    您不需要触发器。请改用页面进程。页面项目的值(我假设是 P1_CLUB)将在页面提交时作为冒号分隔的返回值列表(在您的情况下为 club_id)传递。使用apex_string.split 将冒号分隔的列表转换为 pl/sql 数组。遍历数组并在 clubs 表中插入/更新/删除记录。

    【讨论】:

    • 我尝试按照您的建议进行操作,但在编写脚本时遇到问题。我已经更新了我的问题以包含我编写的脚本。你能帮我写那个剧本吗?此外,我通过选择“按下按钮时”作为“创建”和“类型”作为“PL/SQL 函数体”将其写入“服务器端条件”部分。我做得对吗?
    • Hello Samman "PL/SQL Function body" 不适用于页面进程。您确定要选择“页面进程”。这不会在我的一个答复中得到回答,并且不再与原始问题相关。此外,询问后续问题直接针对单个用户,而不是针对 StackOverflow 社区。我建议改为发布一个新问题。
    【解决方案2】:

    除了 Koen 的回答之外,如果您想查看事件并且还想使用选中的值填充复选框,则必须为复选框页面项设置以下属性:

    1. 来源 - 类型 = SQL 查询(返回冒号分隔值)
    2. SQL 查询 = 从 my_club_to_event_table 中选择 club_id,其中 event_id = :P1_EVENT_ID
    3. Used = 始终,替换会话状态中的任何现有值

    假设 P1_EVENT_ID 是该页面上的主键页面项。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      相关资源
      最近更新 更多