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

下载本文档

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

文档简介

成绩: Oracle数据库系统应用大作业班 级:学 号:姓 名:指导教师:黄建才日 期:2013/5/9Oracle的存储过程 摘要存储过程是oracle中的一类大问题,在初次使用存储过程解决问题时,对存储过程的创建和使用方法不是很清楚,导致使用的时候老是提示错误。对于这个问题,我又从网上和书上找了一些例子来看,认真的学习了一下存储过程的简单的应用,简单的认识了一下存储过程的用法,并实践了一下,解决了之前的问题。Oracle中的存储过程的使用可以使得程序执行效率更高、安全性更好,因为过程建立之后 已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入等。在大型数据库系统中,存储过程具有很重要的作用。存储过程是SQL语句和流控制语句的集合。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。关键词:oracle 存储过程 创建 执行 1 引言 Oracle数据库无范式要求,可根据实际系统需求构建数据库,采用标准的SQL结构化查询语句,具有丰富的开发工具,覆盖开发周期的各个阶段,支持多种系统平台并且数据库的安全级别是C2级(最高级)等这些优点,使得oracle越来越受到人们的青睐,所占的市场份额也越来越多。在这次的oracle实验中切身感受到了oracle的一些优点,其他的优点还需要等以后的应用中来慢慢了解。在这次的oracle的实验中,在关于存储过程和函数的方面我遇到了一些难题,所以我就整理了一些资料来解决这个难题,最后就成了这篇大作业的内容。 在数据库中对数据的修改查询过程很频繁,oracle数据库也不例外,为了能更快速高效简便的完成这些操作,就要用到存储过程这个方法。存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。 简单说,你在你的机器上写了个存储过程,这个存储过程像那些表里的数据一样被放在遥远的数据库服务器当中,但是它又是可执行的代码,其他能连到数据库服务器的用户,可以调用你写的存储过程。它的作用是隐藏细节,就是说,你写的存储过程代码可能很复杂,但是其他人调用它却很简单,不用具体知道它是如何做的,且一次能完成多个指令。 oracle有系统存储过程和自定义存储过程2种存储过程。 系统存储过程就是由oracle预先提供的一组完成特定功能的存储过程,安装完oracle就有了。自定义存储过程就是存在oracle数据库里由一组plsql语句组成的自定义过程(procedure)。它可以供其它oracle自定义存储过程、自定义函数和job调用或者由客户端程序调用。2 具体内容(一)关于编写存储过程需要注意以下几点:1赋值符号 := 逻辑等 =2注释单行代码用 - 注释代码块用 /*-*/ 3字符串连接符 |4变量在变量声明区内进行声明:IS和BEGIN之间5变量声明方式通常有如下三种: 1)单个变量 mo_flag NUMBER :=0; content TABLE.CONTENT%TYPE; 2)数组 TYPE data_type IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER; -引用形式为data_type(i) TYPE rule_type IS RECORD (data_id TABLE.ID%TYPE, data_name TABLE.NAME%TYPE ); -引用形式为rule_type(i).data_id6经常用到的一个内置函数DECODE:DECODE(id,1,Southlake, 2,San Francisco, 3,New Jersey, 4,Seattle,Non-domestic)当id是1时,返回Southlake;是2时,返回San Francisco;依次,如果都不是时,返回Non-domestic(二)PL/SQL块结构1)存储过程的创建create or replace procedure 存储过程名(param1 in type,param2 out type) as变量1 类型(值范围); -vs_msg VARCHAR2(4000);变量2 类型(值范围);BeginSelect count(*) into 变量1 from 表A where列名=param1;If (判断条件) thenSelect 列名 into 变量2 from 表A where列名=param1;Dbms_output。Put_line(打印信息);Elsif (判断条件) thenDbms_output。Put_line(打印信息);ElseRaise 异常名(NO_DATA_FOUND);End if;ExceptionWhen others thenRollback;End;2)判断语句:if 比较式 then begin end; end if; create or replace procedure test(x in number) isbeginif x 0 thenbeginx := 0 - x;end;end if;if x = 0 thenbeginx: = 1;end;end if;end test;3)For 循环For . in . LOOP- 执行语句 end LOOP;(1) 循环遍历游标create or replace procedure test() asCursor cursor is select name from student; name varchar(20);beginfor name in cursor LOOPbegindbms_output.putline(name);end;end LOOP;end test;(2) 循环遍历数组create or replace procedure test(varArray in myPackage.TestArray) as-( 输入参数varArray 是自定义的数组类型,定义方式见标题6) i number;begini := 1; - 存储过程数组是起始位置是从1 开始的,与java 、C 、C+ 等语言不同。因为在Oracle 中本是没有数组的概念的,数组其实就是一张 - 表(Table), 每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历 for i in 1.varArray.count LOOPdbms_output.putline(The No.| i | record in varArray is:|varArray(i);end LOOP;end test;4)While 循环while 条件语句 LOOP beginend;end LOOP;E.gcreate or replace procedure test(i in number) asbeginwhile i SET SERVEROUTPUT ON BUFFER 20000;用dbms_output.put_line(strin_content);可以在存储过程中输出信息,对存储过程进行调试;只有将serveroutput变量设为on后,信息才能显示在屏幕上2EXECUTE procedure_name;执行一个存储过程3PL/SQL语句中的组函数的使用方法等。3 结论(一)存储过程的优点是: 1、 存储过程可以使得程序执行效率更高、安全性更好,因为过程建立之后 已经编译并且储存到数据库,直接写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

提交评论