大作业的格式_第1页
大作业的格式_第2页
大作业的格式_第3页
大作业的格式_第4页
大作业的格式_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩:Oracle数据库系统应用大作业班级:学号:姓名:指导教师:黄建才日期:2013/5/9Oracle的存储过程摘要存储过程是oracle中的一类大问题,在初次使用存储过程解决问题时,对存储过程的创建和使用方法不是很清楚,导致使用的时候老是提示错误。对于这个问题,我又从网上和书上找了一些例子来看,认真的学习了一下存储过程的简单的应用,简单的认识了一下存储过程的用法,并实践了一下,解决了之前的问题。Oracle中的存储过程的使用可以使得程序执行效率更高、安全性更好,因为过程建立之后已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入等。在大型数据库系统中,存储过程具有很重要的作用。存储过程是SQL语句和流控制语句的集合。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。关键词:oracle存储过程创建执行1引言Oracle数据库无范式要求,可根据实际系统需求构建数据库,采用标准的SQL结构化查询语句,具有丰富的开发工具,覆盖开发周期的各个阶段,支持多种系统平台并且数据库的安全级别是C2级(最高级)等这些优点,使得oracle越来越受到人们的青睐,所占的市场份额也越来越多。在这次的oracle实验中切身感受到了oracle的一些优点,其他的优点还需要等以后的应用中来慢慢了解。在这次的oracle的实验中,在关于存储过程和函数的方面我遇到了一些难题,所以我就整理了一些资料来解决这个难题,最后就成了这篇大作业的内容。在数据库中对数据的修改查询过程很频繁,oracle数据库也不例外,为了能更快速高效简便的完成这些操作,就要用到存储过程这个方法。存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。简单说,你在你的机器上写了个存储过程,这个存储过程像那些表里的数据一样被放在遥远的数据库服务器当中,但是它又是可执行的代码,其他能连到数据库服务器的用户,可以调用你写的存储过程。它的作用是隐藏细节,就是说,你写的存储过程代码可能很复杂,但是其他人调用它却很简单,不用具体知道它是如何做的,且一次能完成多个指令。oracle有系统存储过程和自定义存储过程2种存储过程。系统存储过程就是由oracle预先提供的一组完成特定功能的存储过程,安装完oracle就有了。自定义存储过程就是存在oracle数据库里由一组plsql语句组成的自定义过程(procedure)。它可以供其它oracle自定义存储过程、自定义函数和job调用或者由客户端程序调用。2具体内容(一)关于编写存储过程需要注意以下几点:1>赋值符号:=endLOOP;endtest;5)数组首先明确一个概念:Oracle中本是没有数组的概念的,数组其实就是一张表(Table),每个数组元素就是表中的一个记录。使用数组时,用户可以使用Oracle已经定义好的数组类型,或可根据自己的需要定义数组类型。(1)使用Oracle自带的数组类型xarray;--使用时需要需要进行初始化e.g:createorreplaceproceduretest(youtarray)isxarray;beginx:=newarray();y:=x;endtest;(2)自定义的数组类型(自定义数据类型时,建议通过创建Package的方式实现,以便于管理)createorreplacepackagemyPackageisPublictypedeclarationstypeinfoisrecord(namevarchar(20),ynumber);typeTestArrayistableofinfoindexbybinary_integer;--此处声明了一个TestArray的类型数据,其实其为一张存储Info数据类型的Table而已,及TestArray就是一张表,有两个字段,一个是name,一个是y。需要注意的是此处使用了Indexbybinary_integer编制该Table的索引项,也可以不写,直接写成:typeTestArrayistableofinfo,如果不写的话使用数组时就需要进行初始化:varArraymyPackage.TestArray;varArray:=newmyPackage.TestArray();endTestArray;6)游标的使用Oracle中Cursor是非常有用的,用于遍历临时表中的查询结果。其相关方法和属性也很多,现仅就常用的用法做一二介绍:(1)Cursor型游标(不能用于参数传递)createorreplaceproceduretest()iscusor_1Cursorisselectstd_namefromstudentwhere...;--Cursor的使用方式1cursor_2Cursor;beginselectclass_nameintocursor_2fromclasswhere...;--Cursor的使用方式2可使用ForxincursorLOOP....endLOOP;来实现对Cursor的遍历endtest;(2)SYS_REFCURSOR型游标,该游标是Oracle以预先定义的游标,可作出参数进行传递createorreplaceproceduretest(rsCursoroutSYS_REFCURSOR)iscursorSYS_REFCURSOR;namevarhcar(20);beginOPENcursorFORselectnamefromstudentwhere...--SYS_REFCURSOR只能通过OPEN方法来打开和赋值LOOPfetchcursorintoname--SYS_REFCURSOR只能通过fetchinto来打开和遍历exitwhencursor%NOTFOUND;--SYS_REFCURSOR中可使用三个状态属性:---%NOTFOUND(未找到记录信息)%FOUND(找到记录信息)---%ROWCOUNT(然后当前游标所指向的行位置)dbms_output.putline(name);endLOOP;rsCursor:=cursor;endtest;(三)应用和调试的时候需要注意以下几种应用:1>SETSERVEROUTPUTONBUFFER20000;用dbms_output.put_line('strin_content');可以在存储过程中输出信息,对存储过程进行调试;只有将serveroutput变量设为on后,信息才能显示在屏幕上2>EXECUTEprocedure_name;执行一个存储过程3>PL/SQL语句中的组函数的使用方法等。3结论(一)存储过程的优点是:存储过程可以使得程序执行效率更高、安全性更好,因为过程建立之后已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入2、当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3、存储过程可以重复使用,可减少数据库开发人员的工作量。

4、建立过程不会很耗系统资源,因为过程只是在调用才执行。

5、存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

6、使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用(RPC)处理服务器上的存储过程而提高性能。RPC封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。

7、可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

8、代码精简一致,一个存储过程可以用于应用程序代码的不同位置。

9、增强安全性:

a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;

b、提高代码安全,防止SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);

c、SqlParameter类指定存储过程参数的数据类型,作为深层次防御性策略的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论