Oracle apex 我已经创建了一个交互式报告。我想基于每个记录可用的列链接执行PL/SQL
我已经创建了一个交互式报告。我想基于每个记录可用的列链接执行PL/SQL。例如,该报告具有航班ID和起飞日期列。当用户单击该记录上的链接时,我希望使用PL/SQL更新/插入到另一个表中,并在上面提到的两列下显示当前记录中可用的详细信息。我怎样才能做到这一点?请帮忙。 我有一个plsql块Oracle apex 我已经创建了一个交互式报告。我想基于每个记录可用的列链接执行PL/SQL,oracle-apex,Oracle Apex,我已经创建了一个交互式报告。我想基于每个记录可用的列链接执行PL/SQL。例如,该报告具有航班ID和起飞日期列。当用户单击该记录上的链接时,我希望使用PL/SQL更新/插入到另一个表中,并在上面提到的两列下显示当前记录中可用的详细信息。我怎样才能做到这一点?请帮忙。 我有一个plsql块 BEGIN INSERT INTO flight_seats WITH seats AS (SELECT rownum r FROM dual CONNECT BY LEVEL
BEGIN
INSERT INTO flight_seats
WITH seats AS
(SELECT rownum r FROM dual CONNECT BY LEVEL <= 350)
SELECT flight_shedule.flight_id,
flight_shedule.departure_date,
r seat,
CASE
WHEN r BETWEEN start_a AND end_a THEN
'A'
WHEN r BETWEEN start_b AND end_b THEN
'B'
WHEN r BETWEEN start_c AND end_c THEN
'C'
END CLASS,
900 fare,
'o' status
FROM seats, airplane, flight_shedule
WHERE flight_shedule.airplane_id = airplane.airplane_id;
END;
如何在oracle apex中执行此操作。您可以使用如下URL定义链接:
apex.submit('INSERTSEATS_#FLIGHT_ID#_#DEPARTURE_DATE_STR#');
报告中的航班号和起飞日期参考列别名。列出发日期是以某种特定方式格式化的出发日期,例如YYYYMMDD
这将提交带有请求值的页面,如INSERTSEATS_123_20151231
然后,您可以创建一个在提交页面上的进程,该进程在以下情况下触发:请求,如“INSERTSEATS%”PL/SQL条件
这个过程需要做的第一件事是解析请求值,找出航班ID和起飞日期。您可以使用functionpex_util.string_to_table:request,''将请求字符串拆分为3个元素的数组,即字符串'INSERTSEATS',航班ID如'123',起飞日期如'20151231'
最后,您可以使用insert语句中获得的航班ID和起飞日期值,首先将日期字符串转换回日期值
使现代化
@Drumberg在评论中指出,您也可以通过apex.submit设置页面项。因此,您的链接可以定义为:
apex.submit
({request:"INSERTSEATS",
set:{"P1_FLIGHT_ID":#FLIGHT_ID#,
"P1_DEPARTURE_DATE_STR":#DEPARTURE_DATE_STR#}
});
然后,提交过程的条件Request=INSERTSEATS,并使用insert语句中页面项的值。这里是我过去使用过的异步方法 首先,您需要一些支持变量的页面项 PXXX_出发日期_ PXXX_航班号 现在更改列链接,使其触发自定义事件并传递所需的报告行数据
javascript:$('body').trigger('INSERT_SEATS', {flightId:"#FLIGHT_ID#", departureDate:"#DEPARTURE_DATE_STR#"});
现在,基于自定义事件创建动态操作
事件:自定义
定制活动:插入座位
选择类型:jQuery选择器
jQuery选择器:主体
此动态动作应有两个真实动作:
用于使用触发器中的数据设置临时页面项的JavaScript操作,请注意,这指的是事件本身。数据包含在事件中
$s('PXXX_FLIGHT_ID', this.data.flightId);
$s('PXXX_DEPARTURE_DATE', this.data.departureDate);
PL/SQL操作引用页面项并执行DML
警报是可选的,但我通常会提醒用户操作已完成
您不必将自定义事件附加到主体。它可以附加到页面上的任何DOM节点。因此,例如,如果您的报告区域有一个flightReport的静态ID,那么您可以执行$'flightReport'。触发'INSERT_SEATS',…。我想也可以使用apex.submit设置页面项。这将节省拆分请求字符串的时间。不过方法不错。