oracle存储过程总结(一、基本应用)

oracle存储过程总结(一、基本应用)

ID:14721998

大小:52.50 KB

页数:23页

时间:2018-07-30

oracle存储过程总结(一、基本应用)_第1页
oracle存储过程总结(一、基本应用)_第2页
oracle存储过程总结(一、基本应用)_第3页
oracle存储过程总结(一、基本应用)_第4页
oracle存储过程总结(一、基本应用)_第5页
资源描述:

《oracle存储过程总结(一、基本应用)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Oracle存储过程总结(一、基本应用)建立存储过程或函数存储过程或函数是存储ORACLE数据库中的PL/SQL程序,可由用户直接或间接调用。使用存储过程和函数主要优越性是:1、提高了效:在客户/服务器体系结构中,客户机应用向数据库服务器提出对SQL的需求。随着用户数量的增加,SQL请求也就不断地增加,使网络很快就成为运行的瓶颈。使用存储过程可使运行性能得到显著的改进,因为对储过程的一个调用,即调用了在服务器中执行的多个SQL语句,从而减少了网络的拥挤。2、可重用性:一个PL/SQL程序只需编写一次,即可用于各种地方.3、可移植性:可在任何ORACLE数据库中使用存储过程

2、,而不用考虑平台问题。4、可维护性:一个存储过程用于完成一个特定的任务,如数据库触发器等需要调用该过程的地方均调用同一个存储过程,这样可降低软件维护的成本。一、存储过程1、建立存储过程的语法。CREATE[ORREPLACE]PROCEDURE程储过程名[(参数1,……参加n)]IS[局部变量声明部分]BEGIN可执行部分[例外处理部分]END;说明:ORREPLACE选项是当此存储过程存在时覆盖此程储过程。参数部分和过程定义的语法相同。例:定义一个存储过程用于删除students表中按学号指定的学生记录。CREATEORREPLACEPROCEDUREDELE(STUI

3、DVARCHAR2)ISBEGINDELETEFROMSTUDENTSWHERESTU_ID=STUID;END;2、调用存储过程方法:EXECUTE存储过程名(参数1,参数n);说明:参数1到参数n的类型与存储过程定义的类型必须一致,且参数的个数必须相同。例:调用DELE存储过程删除学号为1的学生记录。EXECUTEDELE(‘1’);例:建立一个存储过程,在emp表中给按雇员号指定的人员增加工资,如果工资大于2000则增加50,否则如果工资大于1000则增加100,否则增加150。CREATEORREPLACEPROCEDUREADDSAL(EMPLOYNOEMP.E

4、MPNO%TYPE)ISINCREMENTNUMBER;SALARYEMP.SAL%TYPE;BEGINSELECTSALINTOSALARYFROMEMPWHEREEMPNO=EMPLOYNO;IFSALARY>=2000THENINCREMENT:=50;ELSIFSALARY>=1000THENINCREMENT:=100;ELSEINCREMENT:=150;ENDIF;UPDATEEMPSETSAL=SAL+INCREMENTWHEREEMPNO=EMPLOYNO;END;调用此存储过程,给雇员号为7369的记录增加相应的工资。Executeaddsal(‘73

5、69’);二、存储函数1、语法CREATE[ORREPLACE]FUNCTION函数名[参数1,……参数n]RETURN函数数据类型IS[局部变量说明]BEGIN可执行部分[例外处理部分]RETURN函数的值END;说明:函数数据类型是函数返回值的数据类型;函数的值是返回给调用程序的数值。例:建立一个存储函数,统计指定部门的人数。CREATEORREPLACEFUNCTIONCOUNTNUM(DEPNONUMBER)RETURNNUMBERISSUMANUMBER;BEGINSELECTCOUNT(*)INTOSUMAFROMEMPWHEREDEPTNO=DEPNORET

6、URNSUMA;END;调用此函数时注意不能把函数单独的写成一行。可写在PL/SQL赋值语句的右端。或写在SELECT语句中等等。例:写一PL/SQL块统计10号部门和30号部门人数之和。DeclareAnumber;BeginA:=countnum(10)+countnum(30);Dbms_output.put_line(a);End;例:建立一个存储过程,将STUDENTS表中按学号指定的学生记录移至HISTORY表中。并在history表中增加移入日期(删除STUDENTS表中的记录,同时录入到HISTORY表中)。Createorreplaceprocedure

7、move(stunovarchar)isBegin/*将students中学号为stuno的记录插入到history表中*/Insertintohistory(stu_id,name,sex,ldate)selectstu_id,name,sex,sysdatefromstudentswherestu_id=stuno;/*将students中学号为stuno的记录删除*/deletefromstudentswherestu_id=stuno;end;调用此存储过程,将学号为1的记录移入历史表executemove(‘1’);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。