Skip to content

Commit e563343

Browse files
authored
Merge pull request #136 from oracle/add-data-export-samples
Add sample code for the data export package
2 parents 4998324 + 9d944e3 commit e563343

File tree

10 files changed

+696
-0
lines changed

10 files changed

+696
-0
lines changed

apex/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ This directory contains examples for APEX.
55
| Repo/Folder name | Description |
66
| ------------- | ------------- |
77
| [plugins](./plugins) | Plug-In examples |
8+
| [sample-code](./sample-code) | Example Code |
89

910
## Documentation
1011
You can find the online documentation of Oracle Application Express under [https://docs.oracle.com/en/database/oracle/application-express/20.2/index.html](https://docs.oracle.com/en/database/oracle/application-express/20.2/index.html)

apex/sample-code/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Example Code
2+
3+
This directory contains code examples for various APEX functionality.
4+
5+
| Repo/Folder name | Description |
6+
| ------------- | ------------- |
7+
| [data-export](./data-export) | Examples highlighting the APEX Data Export functionality |
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
declare
2+
l_context apex_exec.t_context;
3+
l_export apex_data_export.t_export;
4+
begin
5+
6+
apex_session.create_session (
7+
p_app_id => 101,
8+
p_page_id => 1,
9+
p_username => 'DUMMY' );
10+
11+
l_context := apex_exec.open_query_context(
12+
p_location => apex_exec.c_location_local_db,
13+
p_sql_query => 'select e.ename,
14+
e.job,
15+
m.ename as manager,
16+
e.hiredate,
17+
e.sal,
18+
d.dname,
19+
d.loc
20+
from emp e
21+
join dept d
22+
on d.deptno = e.deptno
23+
left join emp m
24+
on e.mgr = m.empno
25+
order by e.deptno' );
26+
27+
l_export := apex_data_export.export (
28+
p_context => l_context,
29+
p_format => nvl( :format, apex_data_export.c_format_html ),
30+
p_file_name => 'employees' );
31+
32+
apex_exec.close( l_context );
33+
34+
apex_data_export.download(
35+
p_export => l_export,
36+
p_content_disposition => apex_data_export.c_inline,
37+
p_stop_apex_engine => false );
38+
39+
exception
40+
when others then
41+
apex_exec.close( l_context );
42+
raise;
43+
end;
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
declare
2+
l_context apex_exec.t_context;
3+
4+
l_columns apex_data_export.t_columns;
5+
l_export apex_data_export.t_export;
6+
begin
7+
8+
apex_session.create_session(
9+
p_app_id => 101,
10+
p_page_id => 1,
11+
p_username => 'DUMMY' );
12+
13+
l_context := apex_exec.open_query_context(
14+
p_location => apex_exec.c_location_local_db,
15+
p_sql_query => q'[select e.ename,
16+
e.job,
17+
m.ename as manager,
18+
e.hiredate,
19+
e.sal,
20+
d.dname,
21+
d.loc
22+
from emp e
23+
join dept d
24+
on d.deptno = e.deptno
25+
left join emp m
26+
on e.mgr = m.empno
27+
order by e.deptno]' );
28+
29+
-- Todo: Add column groups
30+
31+
apex_data_export.add_column( p_columns => l_columns, p_name => 'DNAME', p_heading => 'Department', p_is_column_break => true );
32+
apex_data_export.add_column( p_columns => l_columns, p_name => 'ENAME', p_heading => 'Employee' );
33+
apex_data_export.add_column( p_columns => l_columns, p_name => 'JOB');
34+
apex_data_export.add_column( p_columns => l_columns, p_name => 'MANAGER');
35+
apex_data_export.add_column( p_columns => l_columns, p_name => 'HIREDATE', p_format_mask => 'DD-MM-YYYY');
36+
apex_data_export.add_column( p_columns => l_columns, p_name => 'SAL');
37+
apex_data_export.add_column( p_columns => l_columns, p_name => 'LOC');
38+
39+
l_export := apex_data_export.export (
40+
p_context => l_context,
41+
p_format => nvl( :format, apex_data_export.c_format_html ),
42+
p_columns => l_columns );
43+
44+
apex_exec.close( l_context );
45+
46+
apex_data_export.download(
47+
p_export => l_export,
48+
p_stop_apex_engine => false,
49+
p_content_disposition => apex_data_export.c_inline );
50+
51+
exception
52+
when others then
53+
apex_exec.close( l_context );
54+
raise;
55+
end;
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
declare
2+
l_context apex_exec.t_context;
3+
4+
l_column_groups apex_data_export.t_column_groups;
5+
l_group_emp pls_integer;
6+
l_group_dept pls_integer;
7+
l_columns apex_data_export.t_columns;
8+
l_export apex_data_export.t_export;
9+
begin
10+
11+
apex_session.create_session(
12+
p_app_id => 101,
13+
p_page_id => 1,
14+
p_username => 'DUMMY' );
15+
16+
l_context := apex_exec.open_query_context(
17+
p_location => apex_exec.c_location_local_db,
18+
p_sql_query => q'[select e.ename,
19+
e.job,
20+
m.ename as manager,
21+
e.hiredate,
22+
e.sal,
23+
d.dname,
24+
d.loc
25+
from emp e
26+
join dept d
27+
on d.deptno = e.deptno
28+
left join emp m
29+
on e.mgr = m.empno
30+
order by e.deptno]' );
31+
32+
apex_data_export.add_column_group(
33+
p_column_groups => l_column_groups,
34+
p_idx => l_group_emp,
35+
p_name => 'Employee' );
36+
37+
apex_data_export.add_column_group(
38+
p_column_groups => l_column_groups,
39+
p_idx => l_group_dept,
40+
p_name => 'Department' );
41+
42+
apex_data_export.add_column( p_columns => l_columns, p_name => 'DNAME', p_heading => 'Department', p_is_column_break => true );
43+
apex_data_export.add_column( p_columns => l_columns, p_name => 'ENAME', p_heading => 'Employee', p_column_group_idx => l_group_emp);
44+
apex_data_export.add_column( p_columns => l_columns, p_name => 'JOB', p_heading => 'Job', p_column_group_idx => l_group_emp);
45+
apex_data_export.add_column( p_columns => l_columns, p_name => 'MANAGER', p_heading => 'Manager', p_column_group_idx => l_group_emp);
46+
apex_data_export.add_column( p_columns => l_columns, p_name => 'HIREDATE', p_heading => 'Hire date', p_format_mask => 'DD-MM-YYYY', p_column_group_idx => l_group_emp);
47+
apex_data_export.add_column( p_columns => l_columns, p_name => 'SAL', p_heading => 'Salary', p_format_mask => 'FML999G999G999G999G990D00', p_column_group_idx => l_group_emp);
48+
apex_data_export.add_column( p_columns => l_columns, p_name => 'LOC', p_heading => 'Location', p_column_group_idx => l_group_dept);
49+
50+
-- Todo: Add highlight
51+
52+
l_export := apex_data_export.export (
53+
p_context => l_context,
54+
p_format => nvl( :format, apex_data_export.c_format_html ),
55+
p_columns => l_columns,
56+
p_column_groups => l_column_groups );
57+
58+
apex_exec.close( l_context );
59+
60+
apex_data_export.download(
61+
p_export => l_export,
62+
p_stop_apex_engine => false,
63+
p_content_disposition => apex_data_export.c_inline );
64+
65+
exception
66+
when others then
67+
apex_exec.close( l_context );
68+
raise;
69+
end;
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
declare
2+
l_context apex_exec.t_context;
3+
4+
l_column_groups apex_data_export.t_column_groups;
5+
l_group_emp pls_integer;
6+
l_group_dept pls_integer;
7+
l_columns apex_data_export.t_columns;
8+
l_highlights apex_data_export.t_highlights;
9+
l_export apex_data_export.t_export;
10+
begin
11+
12+
apex_session.create_session(
13+
p_app_id => 101,
14+
p_page_id => 1,
15+
p_username => 'DUMMY' );
16+
17+
l_context := apex_exec.open_query_context(
18+
p_location => apex_exec.c_location_local_db,
19+
p_sql_query => q'[select e.ename,
20+
e.job,
21+
m.ename as manager,
22+
e.hiredate,
23+
e.sal,
24+
d.dname,
25+
d.loc,
26+
case e.job
27+
when 'MANAGER' then 1
28+
when 'SALESMAN' then 2
29+
end row_highlight,
30+
case when e.sal >= 3000 then 3 end col_highlight
31+
from emp e
32+
join dept d
33+
on d.deptno = e.deptno
34+
left join emp m
35+
on e.mgr = m.empno
36+
order by e.deptno]' );
37+
38+
apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 1, p_value_column => 'ROW_HIGHLIGHT', p_background_color => '#DAFF33' );
39+
apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 2, p_value_column => 'ROW_HIGHLIGHT', p_background_color => '#9884DD' );
40+
apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 3, p_value_column => 'COL_HIGHLIGHT', p_background_color => 'red', p_text_color => 'white', p_display_column => 'SAL' );
41+
42+
apex_data_export.add_column_group( p_column_groups => l_column_groups, p_idx => l_group_emp, p_name => 'Employee' );
43+
apex_data_export.add_column_group( p_column_groups => l_column_groups, p_idx => l_group_dept, p_name => 'Department' );
44+
45+
apex_data_export.add_column( p_columns => l_columns, p_name => 'DNAME', p_heading => 'Department', p_is_column_break => true );
46+
apex_data_export.add_column( p_columns => l_columns, p_name => 'ENAME', p_heading => 'Employee', p_column_group_idx => l_group_emp);
47+
apex_data_export.add_column( p_columns => l_columns, p_name => 'JOB', p_heading => 'Job', p_column_group_idx => l_group_emp);
48+
apex_data_export.add_column( p_columns => l_columns, p_name => 'MANAGER', p_heading => 'Manager', p_column_group_idx => l_group_emp);
49+
apex_data_export.add_column( p_columns => l_columns, p_name => 'HIREDATE', p_heading => 'Hire date', p_format_mask => 'DD-MM-YYYY', p_column_group_idx => l_group_emp);
50+
apex_data_export.add_column( p_columns => l_columns, p_name => 'SAL', p_heading => 'Salary', p_format_mask => 'FML999G999G999G999G990D00', p_column_group_idx => l_group_emp);
51+
apex_data_export.add_column( p_columns => l_columns, p_name => 'LOC', p_heading => 'Location', p_column_group_idx => l_group_dept);
52+
53+
-- Todo: Add Aggregates
54+
55+
l_export := apex_data_export.export (
56+
p_context => l_context,
57+
p_format => nvl( :format, apex_data_export.c_format_html ),
58+
p_columns => l_columns,
59+
p_column_groups => l_column_groups,
60+
p_highlights => l_highlights );
61+
62+
apex_exec.close( l_context );
63+
64+
apex_data_export.download(
65+
p_export => l_export,
66+
p_stop_apex_engine => false,
67+
p_content_disposition => apex_data_export.c_inline );
68+
69+
exception
70+
when others then
71+
apex_exec.close( l_context );
72+
raise;
73+
end;
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
declare
2+
l_context apex_exec.t_context;
3+
4+
l_column_groups apex_data_export.t_column_groups;
5+
l_group_emp pls_integer;
6+
l_group_dept pls_integer;
7+
l_columns apex_data_export.t_columns;
8+
l_highlights apex_data_export.t_highlights;
9+
l_aggregates apex_data_export.t_aggregates;
10+
l_export apex_data_export.t_export;
11+
begin
12+
13+
apex_session.create_session(
14+
p_app_id => 101,
15+
p_page_id => 1,
16+
p_username => 'DUMMY' );
17+
18+
l_context := apex_exec.open_query_context(
19+
p_location => apex_exec.c_location_local_db,
20+
p_sql_query => q'[select e.ename,
21+
e.job,
22+
m.ename as manager,
23+
e.hiredate,
24+
e.sal,
25+
d.dname,
26+
d.loc,
27+
case e.job
28+
when 'MANAGER' then 1
29+
when 'SALESMAN' then 2
30+
end row_highlight,
31+
case when e.sal >= 3000 then 3 end col_highlight,
32+
sum(e.sal) over (partition by e.deptno) dept_sal,
33+
sum(e.sal) over () total_sal
34+
from emp e
35+
join dept d
36+
on d.deptno = e.deptno
37+
left join emp m
38+
on e.mgr = m.empno
39+
order by e.deptno]' );
40+
41+
apex_data_export.add_aggregate(
42+
p_aggregates => l_aggregates,
43+
p_label => 'Sum',
44+
p_format_mask => 'FML999G999G999G999G990D00',
45+
p_display_column => 'SAL',
46+
p_value_column => 'DEPT_SAL',
47+
p_overall_label => 'Total sum',
48+
p_overall_value_column => 'TOTAL_SAL' );
49+
50+
apex_data_export.add_column_group( p_column_groups => l_column_groups, p_idx => l_group_emp, p_name => 'Employee' );
51+
apex_data_export.add_column_group( p_column_groups => l_column_groups, p_idx => l_group_dept, p_name => 'Department' );
52+
53+
apex_data_export.add_column( p_columns => l_columns, p_name => 'DNAME', p_heading => 'Department', p_is_column_break => true );
54+
apex_data_export.add_column( p_columns => l_columns, p_name => 'ENAME', p_heading => 'Employee', p_column_group_idx => l_group_emp);
55+
apex_data_export.add_column( p_columns => l_columns, p_name => 'JOB', p_heading => 'Job', p_column_group_idx => l_group_emp);
56+
apex_data_export.add_column( p_columns => l_columns, p_name => 'MANAGER', p_heading => 'Manager', p_column_group_idx => l_group_emp);
57+
apex_data_export.add_column( p_columns => l_columns, p_name => 'HIREDATE', p_heading => 'Hire date', p_format_mask => 'DD-MM-YYYY', p_column_group_idx => l_group_emp);
58+
apex_data_export.add_column( p_columns => l_columns, p_name => 'SAL', p_heading => 'Salary', p_format_mask => 'FML999G999G999G999G990D00', p_column_group_idx => l_group_emp);
59+
apex_data_export.add_column( p_columns => l_columns, p_name => 'LOC', p_heading => 'Location', p_column_group_idx => l_group_dept);
60+
61+
apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 1, p_value_column => 'ROW_HIGHLIGHT', p_background_color => '#DAFF33' );
62+
apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 2, p_value_column => 'ROW_HIGHLIGHT', p_background_color => '#9884DD' );
63+
apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 3, p_value_column => 'COL_HIGHLIGHT', p_background_color => 'red', p_text_color => 'white', p_display_column => 'SAL' );
64+
65+
-- Todo: Change default styling
66+
67+
l_export := apex_data_export.export (
68+
p_context => l_context,
69+
p_format => nvl( :format, apex_data_export.c_format_html ),
70+
p_columns => l_columns,
71+
p_column_groups => l_column_groups,
72+
p_highlights => l_highlights,
73+
p_aggregates => l_aggregates );
74+
75+
apex_exec.close( l_context );
76+
77+
apex_data_export.download(
78+
p_export => l_export,
79+
p_stop_apex_engine => false,
80+
p_content_disposition => apex_data_export.c_inline );
81+
82+
exception
83+
when others then
84+
apex_exec.close( l_context );
85+
raise;
86+
end;

0 commit comments

Comments
 (0)