CREATE OR REPLACE package demo_pkg is
/*--------------------------------------------------------------------*
This package includes all the PL/SQL code that is used to
demonstrate the use of PL/SQL in WebDB as discussed in the
paper #906 "Top Tips and Techniques for WebDB" for
IOUG-A Live! 2000.
Author : Sameer Jejurkar
Hencie Consulting Services
*--------------------------------------------------------------------*/
empty_vc_arr owa.vc_arr;
/*--------------------------------------------------------------------*
This is a sample procedure used as the basis for creating a form
as discussed in "Tip # 2: Developing Forms based on Stored Procedures"
*--------------------------------------------------------------------*/
procedure form_proc(char_field1 in varchar2,
char_field2 in varchar2,
number_field in number);
/*--------------------------------------------------------------------*
This is the procedure that is called when the form in
"Tip # 5: Using reports to create special form" is submitted.
*--------------------------------------------------------------------*/
procedure report_submit(order_num_list in owa.vc_arr default empty_vc_arr,
p_arg_names in owa.vc_arr default empty_vc_arr,
p_arg_values in owa.vc_arr default empty_vc_arr,
submit in varchar2 default null);
/*--------------------------------------------------------------------*
This is the procedure can be used to display the initial page
in the target frame when frame driver component is run.
This is as discussed in "Tip #8: Write your own PL/SQL packages".
*--------------------------------------------------------------------*/
procedure init_target_frame_page(item_name in varchar2 default 'link');
/*--------------------------------------------------------------------*
This function returns the URL (as a varchar2 string) to call a
WebDB form for a specific row. It can be called in a SQL statement
and can be used in frame driver and report WebDB components. This
is as discussed in "Tip #8: Write your own PL/SQL packages".
FORM_OWNER is the name of the schema that owns the WebDB form
FORM_NAME is the name of the WebDB form
ID_NAME is the name of the column that has been defined as the
alternate ROWID in the form
ID_VALUE is the value of the alternate ROWID
*--------------------------------------------------------------------*/
function target_frame_url(form_owner in varchar2,
form_name in varchar2,
id_value in varchar2,
id_name in varchar2 default 'id') return varchar2;
pragma restrict_references(target_frame_url, WNDS, WNPS, RNDS);
/*--------------------------------------------------------------------*
packaged variable to store the system generated order number
used for WebDB master-detail form as discussed in "Tip #7:
Master Detail Forms"
*--------------------------------------------------------------------*/
generated_order_num number default null;
/*--------------------------------------------------------------------*
This procedure writes the system generated order number passed from
the before-insert-row trigger on ORDER_HEADER table to a packaged
variable. This can be a part of your Table API.
P_ORDER_NUM is the order number
*--------------------------------------------------------------------*/
procedure set_order_number(p_order_num in number);
/*--------------------------------------------------------------------*
This function reads and returns the system generated order number to
the before-insert-row trigger on ORDER_LINE table.
This can be a part of your Table API.
*--------------------------------------------------------------------*/
function get_order_number return number;
END demo_pkg;
/
CREATE OR REPLACE PACKAGE BODY demo_pkg AS
procedure form_proc(char_field1 in varchar2,
char_field2 in varchar2,
number_field in number) is
begin
htp.htmlOpen;
htp.headOpen;
htp.title('Form Based on Stored Proc Successful');
htp.headClose;
htp.bodyOpen;
htp.header(1,'Field 1 : '||char_field1);
htp.header(2,'Field 2 : '||char_field2);
htp.header(3,'Number Field : '||number_field);
htp.header(4,'Header 4');
htp.bodyClose;
htp.htmlClose;
end form_proc;
procedure report_submit(order_num_list in owa.vc_arr default empty_vc_arr,
p_arg_names in owa.vc_arr default empty_vc_arr,
p_arg_values in owa.vc_arr default empty_vc_arr,
submit in varchar2 default null) is
begin
---------------------------------------------------------------------
-- please note that the procedures WWV_HEADINGS.SHOW_HEADER and
-- WWV.HEADINGS.SHOW_FOOTER is an undocumented internal part
-- of WebDB and may not be supported in the future releases of WebDB.
-- You can use such calls to achieve a WebDB look and feel for
-- your hand-coded components. But keep in mind that Oracle may
-- not support some or all of these in the future releases of WebDB.
---------------------------------------------------------------------
webdb.wwv_headings.show_header(p_template=>'IOUG_2000.DEMO_TEMPLATE',
p_title=>'Report disguised as a Form',
p_heading=>'Report as Form' );
htp.bold('Selected Clients are:');
htp.br;
for i in 1..order_num_list.count
loop
htp.bold(order_num_list(i));
htp.br;
end loop;
webdb.wwv_headings.show_footer(p_template=>'IOUG_2000.DEMO_TEMPLATE');
end report_submit;
procedure init_target_frame_page(item_name in varchar2 default 'link') is
begin
htp.p('
');
htp.p('Click on any '||item_name||' to see the details.');
htp.p('');
end init_target_frame_page;
function target_frame_url(form_owner in varchar2,
form_name in varchar2,
id_value in varchar2,
id_name in varchar2 default 'id') return varchar2 is
begin
return(form_owner||'.'||form_name||'.show?p_arg_names=_alt_rowid'||
'&p_arg_names=_rowid&p_arg_values='||id_name||'&p_arg_values='||id_value);
end target_frame_url;
procedure set_order_number(p_order_num in number) is
begin
generated_order_num := p_order_num;
end set_order_number;
function get_order_number return number is
begin
return(generated_order_num);
end get_order_number;
END demo_pkg;
/
Copyright �2000 by Sameer Jejurkar