Oracle Web应用开发之Apache架设与PL/SQL页面设计(4)

 
   | |

导读:本文主要介绍Oracle Web应用开发之Apache架设与PL/SQL页面设计,并介绍了PSP页面及其运行环境Apache mod_plsql模块等方面的内容。

关键词:Oracle Web 应用开发 Apache PL/SQL

正在加载数据...

  3.编写PSP网页,文件名为show.psp。

  程序说明:第1行标识出该页为PL/SQL语言文件。第2行指出即将为该页面生成的PL/SQL过程名,最后PL/SQL页面将要调用数据库中的该过程来显示数据,如果省略该行则以文件名作为缺省的过程名。第3行为即将生成的过程的输入或输出参数,以标记说明,default="1001"说明该参数为可选参数,注意,即使是数值数据类型,也要用双引号括起。第4至11行为该PSP网页的全局参数,同时也是过程show的局部参数,以标记表示。接下来以全局参数调用已经存储在数据库中的过程show_student,程序代码前后分别被置以标记。当然也可将第二步中的过程show_student的编码直接写入以标记括起的程序中,但是为了实现代码与内容的分离,尽量不要把它们混在一起。这样做的好处是分离业务逻辑与表示层,使得程序结构清晰,因为可能还有其它PSP页面调用该存储过程。在页面显示部分对全局参数的调用格式为标记,这也是输出标记,该标记可以实现字符串的连接和变量的计算,如通过psp_id的加减1达到翻页目的。在链接标记<a href="show?id=<%=psp_id-1%>">中,注意show为已经存储的过程,用"show?id="的格式调用过程并输入参数。


<%@ show language="PL/SQL"%>
<%@ plsql procedure="show" %>
<%@ plsql parameter="id" type="NUMBER" default="1001"%>
<%! psp_id        student.id%TYPE:=id;%>
<%! psp_name      student.name%TYPE;%>
<%! psp_dob       student.dob%TYPE;%>
<%! psp_gender    student.gender%TYPE;%>
<%! psp_classyr   student.classyr%TYPE;%>
<%! psp_major     student.major%TYPE;%>
<%! psp_email     student.email%TYPE;%>
<%! psp_photo     student.photo%TYPE;%>
<%
show_student
(   p_id         => psp_id
,   p_name       => psp_name
,   p_dob        => psp_dob
,   p_gender     => psp_gender
,   p_classyr    => psp_classyr
,   p_major      => psp_major
,   p_email      => psp_email
,   p_photo      => psp_photo
);
%>
<html>
<head>
<title>学生信息</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#999900" text="#FFFFFF" link="#3366FF">
<table width="80%" border="0" cellspacing="2" cellpadding="2" align="center" 
height="400">
  <tr> 
    <td colspan="3" height="72"> 
      <div align="center"><font size="+3"><b>学生信息</b></font></div>
    </td>
  </tr>
  <tr> 
    <td width="40%" height="195" rowspan="8"><img 
src="admin_/images/<%=psp_photo%>" width="172" height="191" align="middle"></td>
    <td colspan="2" height="30">编号为<%=psp_id%>的学生的资料如下:</td>
  </tr>
  <tr>
    <td colspan="2" height="30">编号:<%=psp_id%></td>
  </tr>
  <tr>
    <td colspan="2" height="30">姓名:<%=psp_name%></td>
  </tr>
  <tr>
    <td colspan="2" height="30">出生日期:<%=psp_dob%></td>
  </tr>
  <tr>
    <td colspan="2" height="30">性别:<%=psp_gender%></td>
  </tr>
  <tr>
    <td colspan="2" height="30">年级:<%=psp_classyr%></td>
  </tr>
  <tr>
    <td colspan="2" height="30">主修课程:<%=psp_major%></td>
  </tr>
  <tr>
    <td colspan="2" height="30">电子邮件:<%=psp_email%></td>
  </tr>
  <tr> 
    <td width="40%" height="74"> 
      <div align="center"></div>
    </td>
    <td width="46%" height="74"> 
      <div align="center"><a href="show?id=<%=psp_id-1%>">上一页</a>
   <a href="show?id=<%=psp_id+1%>">下一页</a></div>
    </td>
    <td height="74" width="14%"> 
      <div align="center"></div>
    </td>
  </tr>
</table>
</body>
</html>

 
  4.使用Oracle命令行程序

  使用Oracle命令程序$ORACLE_HOME\bin\loadpsp.exe将第3步编写的PSP页面(show.psp)载入数据库的cf/cf模式下。loadpsp.exe程序的所有选项格式如下:

l:\oracle\ora90\bin\loadpsp.exe
usage: loadpsp [-replace] -user <logon> [<page1><page2> ...]
       where <logon> ::= <username>/<password>[@<connect_string>]
 
  本例中使用如下命令:

l:\oracle\ora90\bin\loadpsp -replace -user cf/cf show.psp
"show.psp":procedure "show" created.
 
  5.载入show.psp页面后,在数据库的cf/cf模式下生成存储过程show(该过程名由网页show.psp中的<%@ plsql procedure="show" %>程序决定),过程中已经加入HTP进程包来调用参数。

以下是引用片段:
PROCEDURE show (
id IN NUMBER default 1001) AS 
 psp_id        student.id%TYPE:=id;
 psp_name      student.name%TYPE;
 psp_dob       student.dob%TYPE;
 psp_gender    student.gender%TYPE;
 psp_classyr   student.classyr%TYPE;
 psp_major     student.major%TYPE;
 psp_email     student.email%TYPE;
 psp_photo     student.photo%TYPE;
 BEGIN NULL;
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
htp.prn(’
’);
show_student
(   p_id         => psp_id
,   p_name       => psp_name
,   p_dob        => psp_dob
,   p_gender     => psp_gender
,   p_classyr    => psp_classyr
,   p_major      => psp_major
,   p_email      => psp_email
,   p_photo      => psp_photo
);
htp.prn(’
<html>
<head>
<title>学生信息</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#999900" text="#FFFFFF" link="#3366FF">
<table width="80%" border="0" cellspacing="2" cellpadding="2" align="center" 
height="400">
  <tr> 
    <td colspan="3" height="72"> 
      <div align="center"><font size="+3"><b>学生信息</b></font></div>
    </td>
  </tr>
  <tr> 
    <td width="40%" height="195" rowspan="8"><img src="admin_/images/’);
htp.prn(psp_photo);
htp.prn(’" width="172" height="191" align="middle"></td>
    <td colspan="2" height="30">编号为’);
htp.prn(psp_id);
htp.prn(’的学生的资料如下:</td>
  </tr>
  <tr>
    <td colspan="2" height="30">编号:’);
htp.prn(psp_id);
htp.prn(’</td>
  </tr>
  <tr>
    <td colspan="2" height="30">姓名:’);
htp.prn(psp_name);
htp.prn(’</td>
  </tr>
  <tr>
    <td colspan="2" height="30">出生日期:’);
htp.prn(psp_dob);
htp.prn(’</td>
  </tr>
  <tr>
    <td colspan="2" height="30">性别:’);
htp.prn(psp_gender);
htp.prn(’</td>
  </tr>
  <tr>
    <td colspan="2" height="30">年级:’);
htp.prn(psp_classyr);
htp.prn(’</td>
  </tr>
  <tr>
    <td colspan="2" height="30">主修课程:’);
htp.prn(psp_major);
htp.prn(’</td>
  </tr>
  <tr>
    <td colspan="2" height="30">电子邮件:’);
htp.prn(psp_email);
htp.prn(’</td>
  </tr>
  <tr> 
    <td width="40%" height="74"> 
      <div align="center"></div>
    </td>
    <td width="46%" height="74"> 
      <div align="center"><a href="show?id=’);
htp.prn(psp_id-1);
htp.prn(’">上一页</a>
   <a href="show?id=’);
htp.prn(psp_id+1);
htp.prn(’">下一页</a></div>
    </td>
    <td height="74" width="14%"> 
      <div align="center"></div>
    </td>
  </tr>
</table>
</body>
</html>
’);
 END;

  6.浏览网址:http://localhost/pls/simpledad/show,即可看到如图1所示的页面,可点击"上一页"或"下一页"浏览相临记录。


Oracle Web应用开发之Apache架设与P
 Oracle Web应用开发之Apache架设与PL/SQL页面设计(1)
 Oracle Web应用开发之Apache架设与PL/SQL页面设计 (2)
 Oracle Web应用开发之Apache架设与PL/SQL页面设计(3)
 Oracle Web应用开发之Apache架设与PL/SQL页面设计(4)

 
来源:赛迪网    作者:曹飞    
 
 
 
 
 

Oracle XML/SOA/Web服务

 
通过添加了无代码AJAX开发表单,Alpha公司使Alpha Five V10开发者可以利用更加丰富的用户界面控件构建面向Oracle数据库的Web应用。
 
在过去几年里,RAD工具的市场敏锐度有了极大的增长,产生增长最大的促进因素来自于向终端用户交付应用程序方式的变化。
 
XML数据和函数比标准的T-SQL要使用更多的资源。因此,如果查询处理大量数据时或XML函数更加复杂,就考虑在数据库级别上使用标准的T-SQL。
 
作为一个DBA,我倾向于关注性能方面的问题,因此我要确定使用XML(扩展标记语言)不会对性能产生影响。
 
Oracle HTTP Server是Apache Webserver的一个版本,它包含的模块可以为不同的 Oracle数据库组件提供 HTTP 接口。Oracle数据库本身还可以通过内在的 HTTP协议支持与这些组件直接通信,因此不需要……

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录