设为首页 收藏本站
查看: 792|回复: 0

[经验分享] 应用Oracle组件实现动态Web数据库

[复制链接]

尚未签到

发表于 2016-8-6 13:48:08 | 显示全部楼层 |阅读模式
  1、用Oracle WebServer构建Web数据库应用

  Oracle 8服务器是一个完善的信息管理环境。它是一个大量数据的储藏所,并给用户提供对这些数据的快速访问。它能够支持C/S结构进行分布式处理和Web计算等。利用其服务器选件之一的WebServer,可以提供实现Web数据库应用的强大功能。

  一般来说,实现Web数据库应用可以在WebServer端提供CGI/API等中间件来连接WebServer 和DB Server,也可以让用户通过Web浏览器把相关应用下载到客户端运行,在客户端直接访问数据库,如Java Applet,Active X,Plug-in等。本文主要介绍利用Oracle 8 提供的PL/SQL和其功能强大的内置程序包来编写程序以实现动态的Web应用。属于利用中间件开发的一种。中间件负责管理WebServer和DBServer之间的通信并提供应用程序服务,它能够直接调用外部程序或脚本代码来访问数据库,因此可以提供与数据库相关的动态HTML页面,或执行用户查询,并将查询结果格式化成HTML页面再通过WebServer返回给用户浏览器。其一般结构如下所示:

  Web浏览器 ←→ Internet ←→ Web Server ←→ CGI/API ←→ Oracle DB Server

  2、PL/SQL

  Oracle从其版本6开始支持一种过程处理语言PL/SQL,并将其作为所有Oracle工具的标准编程语言,从而所有的过程组件在Oracle服务器产品中都能实现。用PL/SQL可以实现下述重要功能:

  存储过程,即存放在Oracle数据库中的程序(或代码段)并为你的机构完成特定的重要工作;

  数据库触发器,即存放在数据库中的代码,可由应用所产生的事件触发;

  程序包,即把多个过程组合在一起当作单个程序单元的代码存放在数据库中。

  其中内置程序包是预先生成的,存储在数据库中,且能在PL/SQL代码块中调用的根据需求可以传递参数的程序。它可以完成把结果直接输出到终端窗口;直接从操作系统文件读写数据;执行动态的SQL等多项功能。常用的如HTP,HTF,OWA-UTIL等。下面将通过一个动态的网上查询分数的实例来说明其在动态Web中的应用。

  3、利用WebServer和PL/SQL开发动态Web实例

  现有一考生成绩库需在网上向用户提供查询成绩的功能。首先可考虑利用HTP程序包根据用户输入的考生号到数据库中查询相应的信息,返回一个网页。代码如下:



以下是代码片段:
    Create or replace procedure score_into_webpage (code_in in number)
  As
  cursor score_cursor is
  select code,name,score
  from student
  where code = code_in;
  Begin
  Htp.htmlopen;
  Htp.headopen;
  Htp.title ('Student's score information');
  Htp.headclose;
  Htp.bodyopen (cattributes=>'bgcolor = "#80800"');
  Htp.tableopen(border');
  Htp.tablecaption ('Score Information','center');
  Htp.tablerowopen;
  Htp.tableheader (' Student Code');
  Htp.tableheader (' Student Name');
  Htp.tableheader (' Student Score');
  --固定地显示页标题、标题、表头等信息,每次调用此页时显示的信息
  --是相同的
  Htp.tablerowclose;
  For score_rec in score_cur
  Loop
  --利用游标的For循环为游标在网页中产生一个数据行
  htp.tablerowopen;
  htp.tabledata (score_rec.code);
  htp.tabledata (score_rec.name);
  htp.tabledata (score_rec.score);
  htp.tablerowclose;
  Endloop;
  Htp.tableclose;
  Htp.bodyclose;
  Htp.htmlclose;
  End;


 通过以上代码,我们有了一个基本的用数据库中的数据动态的生成一个网页的方法,下面将建立一个简单的表单。在表单中调用上述程序和接受用户输入的考生号码,从而在客户端向用户动态地显示从数据库中查询的信息。


以下是代码片段:
    Create or replace procedure ScoreForm
  As
  Begin
  Htp.headopen;
  Htp.title ('Code Entry Form');
  Htp.headclose;
  Htp.bodyopen;
  Htp.header (2,'Score Information Code Form');
  Htp.p ('
  ');
  Htp.formopen ('Score_into_webpage',cmethod=>'GET');
  --打开ScoreForm表单。缺省情况下Score_into_webpage PL/SQL过程用GET
  --方法调用。GET方法在URL里显示传递的参数。
  Htp.tableopen ('border');
  Htp.tablerowopen;
  Htp.tabledata ('Enter Student Code');
  Htp.tabledata (htf.formtext ('code_in',5,5));
  --用一个文本框提示用户输入考号。文本框的名字必须与调用过程里的输入
  --参数相同。
  Htp.tablerowclose;
  Htp.tablerowopen;
  Htp.tablerowclose;
  Htp.tablerowopen;
  Htp.tabledata (htf.formSubmit);
  Htp.tabledata (htf.formReset);
  Htp.tablerowclose;
  Htp.formclose;
  Htp.bodyclose;
  Htp.htmlclose;
  End;


  上述过程在客户端被调用后产生的HTML即可显示一动态表单接受用户输入的考号,然后传递给调用的过程score_into_webpage,从而到Oracle DBServer中查询出所需的数据,再通过该过程动态生成的HTML在Web浏览器中显示出来。

  4、 结束语

  作为一个大型数据库服务器,Oracle提供了一个面向网络的开发工具、应用服务器和数据库服务器的综合平台。本文利用其标准PL/SQL和内置程序包并结合WebServer讨论了基本的动态Web的开发和应用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253718-1-1.html 上篇帖子: oracle学习之系统结构(2)--物理结构 下篇帖子: Oracle存储过程做大数据量插入
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表