1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
DECLARE
t_appid varchar2(4000) := :APP_ID;
t_after_login_url varchar2(4000);
t_after_login_url_base varchar2(4000);
t_gotopage_str varchar2(4000);
t_gotopage varchar2(4000);
t_gotopage_parm_names varchar2(4000);
t_gotopage_parm_values varchar2(4000);
BEGIN
t_after_login_url := APEX_UTIL.GET_SESSION_STATE('FSP_AFTER_LOGIN_URL');
apex_debug.info(t_after_login_url);
IF t_after_login_url IS NOT NULL THEN
IF INSTR(t_after_login_url, '/f?p=') > 0 THEN
-- 'f?p=4000:4500:9790243847840::::FB_FLOW_ID,FB_FLOW_PAGE_ID,P104_LINK_ID3:119035,9999,27183&cs=1HiH11dzE&p_dialog_cs=OG4ZDc0oRg'
-- todo 解析登录前的URL和对应的参数
SELECT COLUMN_VALUE
INTO t_gotopage --- 4500
FROM (SELECT COLUMN_VALUE, ROWNUM rn
FROM TABLE ( apex_string.split(t_after_login_url, ':') ))
WHERE rn = 2;
SELECT COLUMN_VALUE
INTO t_gotopage_parm_names -- FB_FLOW_ID,FB_FLOW_PAGE_ID,P104_LINK_ID3
FROM (SELECT COLUMN_VALUE, ROWNUM rn
FROM TABLE ( apex_string.split(t_after_login_url, ':') ))
WHERE rn = 7;
SELECT COLUMN_VALUE
INTO t_gotopage_parm_values --- 119035,9999,27183&cs=1HiH11dzE&p_dialog_cs=OG4ZDc0oRg
FROM (SELECT COLUMN_VALUE, ROWNUM rn
FROM TABLE ( apex_string.split(t_after_login_url, ':') ))
WHERE rn = 8;
t_gotopage_parm_values := SUBSTR(t_gotopage_parm_values, 1, INSTR(t_gotopage_parm_values, '&') - 1); --- 27181,27182,27183
ELSE
-- todo 解析登录前的URL和对应的参数
-- /pls/apex/r/sssss/ddfdfdffd/qwdqwdq?session=104333301030250
SELECT COLUMN_VALUE
INTO t_after_login_url_base -- qwdqwdq?session=104333301030250
FROM (SELECT COLUMN_VALUE, ROW_NUMBER() OVER (ORDER BY ROWNUM DESC ) rn
FROM TABLE ( apex_string.split(t_after_login_url, '/')
))
WHERE rn = 1;
t_gotopage_str := SUBSTR(t_after_login_url_base, 1, INSTR(t_after_login_url_base, '?') - 1);
-- qwdqwdq
SELECT MAX(DECODE(page_id, '9999', NULL, page_id))
INTO t_gotopage -- 0,1,2,34,5,6,7
FROM APEX_APPLICATION_PAGES
WHERE APPLICATION_ID = t_appid
AND UPPER(PAGE_ALIAS) = UPPER(t_gotopage_str);
END IF;
END IF;
IF t_gotopage = '9999' OR t_gotopage IS NULL THEN
t_gotopage := 1;
END IF;
:P9999_GOTOPAGE := t_gotopage;
END;
|