我有一个在oracle apex中创建新事件的表单。有了这种形式,我就可以创造新的事件很好。但是在表单的底部有一个复选框,用户可以在其中指定参与组织活动的俱乐部。
您可以在上图底部看到的复选框的值列表被设置为sql查询,该查询从“club”表中选择“club\u name”和“club\u id”。
现在我要做的是,在成功创建事件之后,需要将选中的俱乐部的俱乐部id和新创建的事件的id插入到“俱乐部事件”连接表中,该连接表将每个事件与其组织俱乐部相关联。为此,我考虑在events表上创建after trigger。但我找不到如何访问plsql代码中所选俱乐部的id。所以我的问题是,我是如何做到的,我的方法是有关活动与组织俱乐部罚款?谢谢您。
在“koen”的建议下,我试图通过“过程”来实现它。但我在剧本制作上遇到了问题。
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;
我做错了什么?我该如何解决?
2条答案
按热度按时间okxuctiv1#
你不需要扳机。改用页面进程。页面项的值(我假设是p1\u club)将作为返回值的冒号分隔列表(在您的情况下是club\u id)在pagesubmit上传递。使用apex_string.split将冒号分隔的列表转换为pl/sql数组。循环遍历数组并在clubs表中插入/更新/删除记录。
busg9geu2#
除了koen的回答之外,如果您想查看事件并用选中的值填充复选框,则必须为复选框页面项设置以下属性:
source-type=sql查询(返回冒号分隔的值)
sql query=从my\u club\u to\u event\u表中选择俱乐部\u id,其中event\u id=:p1\u event\u id
used=始终,替换会话状态中的任何现有值
假设p1\u event\u id是该页上的主键页项。