欢迎来到天天文库
浏览记录
ID:45770174
大小:514.71 KB
页数:47页
时间:2019-11-17
《存储过程基础》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Oracle存储过程基础存储过程定义什么是存储过程?存储过程或函数是存储ORACLE数据库中的PL/SQL程序,可由用户直接或间接调用。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。存储过程的种类1、系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。2、本地存储过程:用户创建的存储过程是由用户创建并完成某一特定功能的存储过程”事实上一般所说的存储过程就是指本
2、地存储过程。3、临时存储过程:分为两种存储过程:一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。4、远程存储过程:在SQLServer2005中,远程存储过程(RemoteStoredProcedur
3、es)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。5、扩展存储过程:扩展存储过程(ExtendedStoredProcedures)是用户可以使用夕卜部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。存储过程优点使用存储过程和函数主要优越性是:1、提高了效:在客户/服务器体系结构中,客户机应用向数据库服务器提出对SQL的需求。随着用户数量的增加,SQL请求也就不断地增加,使网络很快就成为运行的瓶颈。使用存储过程可使运行性能得到显著的改进,因为对储
4、过程的一个调用,即调用了在服务器中执行的多个SQL语句,从而减少了网络的拥挤。2、可重用性:一个PL/SQL程序只需编写一次,即可用于各种地方.3、可移植性:可在任I可ORACLE数据库中使用存储过程,而不用考虑平台问题。4、可维护性存储过程用于完成一个特定的任务,如数据库触发器等需要调用该过程的地方均调用同_个存储过程”这样可降低软件维护的成本。存储过程1、建立存储过程的语法。CREATE[ORREPLACE]PROCEDURE程储过程名[(参数1,……参加n)]IS[局部变量声明部分]BEGIN可执行部分[
5、例外处理部分]END;说明:ORREPLACE选项是当此存储过程存在时覆盖此程储过程。参数部分和过程定义的语法相同。例1:打印信息createorreplaceproceduretest_print(inputinvarchar2)isbegindbms_output.put_line('Theinputcharis:1IIinput);endtest_print;例2:定义一个存储过程用于删除students表中按学号指走的学生记录。CREATEORREPLACEPROCEDUREDELE(STUIDVARC
6、HAR2)ISBEGINDELETEFROMSTUDENTSWHERESTU.ID=STUID;END;2、调用存储过程方法:EXECUTE存储过程名(参数1渗数n);说明:参数1到参数n的类型与存储过程定义的类型必须一致,且参数的个数必须相同。例调用DELE存储过程删除学号为1的学生记录。EXECUTEDELE(T);3、变量赋值变量名:=值;例:createorreplaceproceduretest_fuzhi(youtnumber)isxnumber(4,2);beginx:=1;y:=x;endtes
7、t—fuzhi;执行:declareynumber;begintest_fuzhi(y);dbms.output.put_line('赋彳也测试:y等1IIy);end;执行结果:赋值测试:y等于:14、SELECTINTOSTATEMENT将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)BEGINSELECTcoll,col2into变呈1,变量2FROMtypestructwherexxx;EXCEPTIONWH
8、ENNO_DATA_FOUNDTHENxxxx;END;例:createorreplaceprocedureTest_SelectIntoisstu_namevarchar2(10);beginselectstunameintostu_namefromstudentwherestuID='001';dbms_output・put_line('学主的姓名是:1IIstu_name);ex
此文档下载收益归作者所有