我创建了一份交互式报告。我想根据每条记录可用的列链接执行 PL/SQL。例如,报告具有 Flight_ID 和出发日期列。当用户单击该记录上存在的链接时,使用 PL/SQL 我想更新/插入到另一个表中,其中包含上述 2 列下当前记录中可用的详细信息。我怎样才能实现这个目标?请帮忙。 我有一个 plsql block 。
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#');
#FLIGHT_ID#
和 #DEPARTURE_DATE_STR#
引用报告中的列别名。 DEPARTURE_DATE_STR
列是以某种特定方式格式化的出发日期,例如YYYYMMDD。
这将提交带有类似“INSERTSEATS_123_20151231”之类的请求值的页面。
然后,您可以创建一个提交页面进程,该进程会在 :request like 'INSERTSEATS%'
(PL/SQL 条件)时触发。
该流程需要做的第一件事是解析请求值以找出航类 ID 和出发日期。您可以使用 functionapex_util.string_to_table(:request,'_')
将请求字符串拆分为 3 个元素的数组,即字符串“INSERTSEATS”、航类 ID,例如“123”和出发日期,例如“20151231”。
最后,您可以使用插入语句中获取的航类 ID 和出发日期值(首先将日期字符串转换回 date
值)。
更新
@Drumbeg 在评论中指出,您还可以通过 apex.submit
设置页面项。所以你的链接可以这样定义:
apex.submit
({request:"INSERTSEATS",
set:{"P1_FLIGHT_ID":#FLIGHT_ID#,
"P1_DEPARTURE_DATE_STR":#DEPARTURE_DATE_STR#}
});
您的提交进程将具有条件 Request=INSERTSEATS,并将使用插入语句中页面项目的值。
关于oracle-apex - 我创建了一份交互式报告。我想根据每条记录可用的列链接执行 PL/SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533501/