Download Databases on the Web - Georgia State University

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Web Programming with PL/SQL
Erdogan Dogdu
Georgia State University
Computer Science Department
[email protected]
http://db.gsu.edu/~edogdu
Content








Oracle Architecture for Web Apps
Oracle mod_plsql Apache module
HTTP
A Simple PL/SQL Web Toolkit Example
PL/SQL Web Toolkit
Parameter Passing
HTML Forms
PL/SQL Server Pages
CSC8711
Oracle Web Extensions
•3-tier: client,
application server
(OAS 9i), database
(Oracle 9i)
•mod_plsql in OAS
•PL/SQL Web Toolkit
CSC8711
Web Request Processing
1.
2.
3.
The Oracle HTTP Server receives a
PL/SQL Server Page request from a client
browser.
The Oracle HTTP Server routes the request
to mod_plsql.
The request is forwarded by mod_plsql to
the Oracle Database. By using the
configuration information stored in your
DAD, mod_plsql connects to the database.
CSC8711
Web Request Processing (cont.)
4.
5.
6.
7.
Mod_plsql prepares the call parameters,
and invokes the PL/SQL procedure in the
application.
The PL/SQL procedure generates an HTML
page using data and the PL/SQL Web
Toolkit accessed from the database.
The response is returned to mod_plsql.
The Oracle HTTP Server sends the
response to the client browser.
CSC8711
Invoking mod_plsql

protocol://hostname[:port]/DAD
location/[[!][schema.][package.]proc_
name[?query_string]]
 Example:
– http://db.gsu.edu:7777/pls/csc8711/simple
CSC8711
HTTP
GET, POST, HEAD methods
 GET. Parameters in query string.

• http://host:port/pls/DAD/foo?a=v&b=1

POST. For large parameter data.
– http://host:port/pls/DAD/foo, POST
data="a=v&b=1“

HEAD. No content data is streamed
back. Only a confirmation.
CSC8711
A Simple Example

Write a PL/SQL procedure (simple.sql) using
PL/SQL Web Toolkit:
CREATE OR REPLACE PROCEDURE simple AS
l_user varchar2(30);
BEGIN
select USER into l_user from dual;
htp.htmlOpen;
htp.headOpen;
htp.title('A Very Very Simple Example');
htp.headClose;
htp.bodyOpen;
htp.line;
htp.header(1,'Simple Example');
htp.line;
htp.paragraph;
…
CSC8711
A Simple Example (cont.)
…
htp.print('Today''s date is: ' || to_char(sysdate, 'DD/MM/YYYY'));
htp.br;
htp.print('Today''s day is: ' || to_char(sysdate, 'DAY'));
htp.paragraph;
htp.print('Ordinary <em>tags</em> can be used in the strings that we send.');
htp.print('Your Oracle USERID is ' || l_user);
htp.line;
htp.address('Raj Sunderraman');
-- owa_util.signature('orarbkx.simple');
htp.bodyClose;
htp.htmlClose;
EXCEPTION
When others Then
htp.print(SQLERRM);
htp.bodyClose;
htp.htmlClose;
END;
/
show errors
CSC8711
A Simple Example (cont.)

Upload the procedure ‘simple’ to the
database:
> sqlplus
SQL> @simple.sql
Procedure created.
No errors.

Run procedure:
http://db.gsu.edu:7777/pls/csc8711/simple
CSC8711
Web Toolkit
Oracle Web Toolkit includes a number of
packages:
 htp and htf package: hypertext
procedures and functions,
 owa_cookie: to handle HTTP cookies,
 owa_util: utility subprograms,
 etc.
CSC8711
htp package
Example:
create or replace procedure hello AS
BEGIN
htp.htmlopen;
-- generates <HTML>
htp.headopen;
-- generates <HEAD>
htp.title('Hello');
-- generates <TITLE>Hello</TITLE>
htp.headclose;
-- generates </HEAD>
htp.bodyopen;
-- generates <BODY>
htp.header(1, 'Hello'); -- generates <H1>Hello</H1>
htp.bodyclose;
-- generates </BODY>
htp.htmlclose;
-- generates </HTML>
END;
CSC8711
htp and htf package

More htp functions:
–
–
–
–
–
–
–
–
Comment: htp.comment
Applet: htp.appletopen, …
List: htp.olistOpen, htp.ulinstOpen, …
Form: htp.formOpen, …
Table: htp.tableOpen, htp.tableData, …
Image: htp.img, etc.
Formatting: htp.print, htp.bold, htp.underline, …
Frame: htp.frame, …
CSC8711
owa_util

owa_util.tablePrint
create or replace procedure showemps is
ignore_more boolean;
begin
ignore_more := owa_util.tablePrint('emp',
'BORDER', OWA_UTIL.PRE_ TABLE);
end;
This procedure gives the output (next slide)
CSC8711
owa_util
<PRE>
----------------------------------------------------------------| EMPNO |ENAME |JOB
|MGR
|HIREDATE
| SAL | COMM | DEPTNO |
----------------------------------------------------------------| 7369| SMITH | CLERK
| 7902 | 17-DEC-80 | 800 |
| 20 |
| 7499| ALLEN | SALESMAN| 7698 | 20-FEB-81 | 1600 | 300 | 30 |
| 7521| WARD
| SALESMAN| 7698 | 22-FEB-81 | 1250 | 500 | 30 |
| 7566| JONES | MANAGER | 7839 | 02-APR-81 | 2975 |
| 20 |
| 7654| MARTIN | SALESMAN| 7698 | 28-SEP-81 | 1250 | 1400| 30 |
| 7698| BLAKE | MANAGER | 7839 | 01-MAY-81 | 2850 |
| 30 |
| 7900| JAMES | CLERK
| 7698 | 03-DEC-81 | 950 |
| 30 |
| 7902| FORD
| ANALYST | 7566 | 03-DEC-81 | 3000 |
| 20 |
| 7934| MILLER | CLERK
| 7782 | 23-JAN-82 | 1300 |
| 10 |
----------------------------------------------------------------</PRE>
CSC8711
Passing Parameters

GET method
http://db:7777/pls/csc8711/pl1?str=Hello&num=4
create or replace procedure pl1(str in varchar2, num in
number) as
1. Hello
begin
<br>
for i in 1..num loop
2. Hello
htp.print(i || '. ' || str);
<br>
htp.br;
3. Hello
end loop;
<br>
end;
4. Hello
<br>
CSC8711
HTML Forms
htp.formOpen(curl in varchar2,
cmethod in varchar2 default ‘POST’,
ctarget in varchar2, cenctype in
varchar2 default null, cattributes in
varchar2 default null);
 <FORM ACTION=“curl”
METHOD=“cmethod”
TARGET=“ctarget”
ENCTYPE=“cenctype” cattributes>

CSC8711
HTML Forms
htp.formSubmit(cname in varchar2
default null, cvalue in varchar2 default
‘Submit’, cattributes in varchar2 default
null)
 <INPUT TYPE=“submit”
NAME=“cname” VALUE=“cvalue”
cattributes>

CSC8711
HTML Forms

HTML forms can have the following elements:
–
–
–
–
–
–
–
Single line input text (htp.formText)
Single line input password (htp.formPassword)
Checkboxes (htp.formCheckbox)
Radio buttons (htp.formRadio)
Submit buttons (htp.formSubmit)
Text areas (htp.formTextarea)
Selects (htp.formSelectOpen,
htp.formSelectOption, htp.formSelectClose)
CSC8711
HTML Forms

Useful functions:
owa_util.get_owa_service_path: Returns
the prefix of the URL pointing to PL/SQL
procedure
Example:
http://db.gsu.edu:7777/pls/survey/login

Use in PL/SQL web program as:
htp.formOpen(owa_util.get_owa_service_
path || ‘start_session’);
CSC8711
Disadvantages of Web Toolkit
PL/SQL Web Toolkit (htp, htf) generates
HTML code form PL/SQL programs.
 Generating nice web pages is difficult,
you cannot author PL/SQL programs in
Frontpage.
 Solution is PSP (next)

CSC8711
PL/SQL Server Pages (PSP)
Author web pages using script-friendly
HTML authoring tools.
 Drop in PL/SQL code in web pages.
 In short:

– Web Toolkit: generate HTML from PL/SQL
– PSP: embedded PL/SQL within HTML
CSC8711
PL/SQL Server Pages (PSP)
Same script tag syntax as JSP, also
similar to ASP
 PSP files should have .psp extension
 Can be as simple as an HTML page (no
PL/SQL script)
 Specifying the scripting language

<%@ page language="PL/SQL" %>
CSC8711
PL/SQL Server Pages (PSP)

Parameter passing
<%@ plsql parameter="varname" %>

Returned document type
<%@ page contentType="MIMEtype" %>
Such as text/xml, text/plain, image/jpeg

Stored procedure name
<%@ page procedure="procname" %>
CSC8711
PL/SQL Server Pages (PSP)

Loading psp document to Oracle
loadpsp [ -replace ] -user
username/password[@connect_string] [
include_file_name ... ] [ error_file_name ]
psp_file_name ...
CSC8711
Related documents