oracle 存储过程及游标

oracle 存储过程及游标

ID:20625160

大小:37.00 KB

页数:5页

时间:2018-10-14

oracle 存储过程及游标_第1页
oracle 存储过程及游标_第2页
oracle 存储过程及游标_第3页
oracle 存储过程及游标_第4页
oracle 存储过程及游标_第5页
资源描述:

《oracle 存储过程及游标》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Oracle的存储过程及游标Oracle中的存储过程和游标:selectmyFunc(参数1,参数2..)todual;--可以执行一些业务逻辑一:Oracle中的函数与存储过程的区别:A:函数必须有返回值,而过程没有.B:函数可以单独执行.而过程必须通过execute执行.C:函数可以嵌入到SQL语句中执行.而过程不行.其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数.二:如何创建存储过程:A:格式createorreplaceprocedure[(参数名参数类型以及描述,....)]---注意,没有

2、返回值is[变量声明]begin[过程处理];----------null;exceptionwhen异常名thenend;注意:参数中默认是按值传递.是in方式.也可以是out和inout方式.这些特点和函数一样.B:举例1:createorreplaceproceduremyPro----createorreplaceprocmyPro出错不能简写(ainint:=0,binint:=0)iscint:=0;beginc:=a+b;dbms_output.put_line('Cisvalue'

3、

4、c);end;执行:executemyPro(10,2

5、0);---在SqlServer中.执行存储过程是不需要括弧的.注意分号不要调了.execmyPro(10,20);--可以简写C:举例2:如果在一个函数里面包含Select语句的话,那么该Select语句必须有into,过程同样也需要.createorreplaceproceduremyPro1(aint:=0,bint:=0)iscint:=0;beginselectempno+a+bintocfromempwhereename='FORD';dbms_output.put_line('Cisvalues'

6、

7、c);end;执行:executemyP

8、ro1(10,20)D:假如在一个过程里面要返回一个结果集,怎么办?大家注意.就必须要用到游标了!用游标来处理这个结果集.createorreplaceprocedureTest(varEmpNameemp.ename%type)isbegin------会报错.错误原因没有into子句.select*fromempwhereenamelike'%'

9、

10、varEmpName

11、

12、'%';end;这个程序我们无法用into,因为在Oracle里面没有一个类型去接受一个结果集.这个时候我们可以声明游标对象去接受他.PL/SQL游标:A:分类:1:隐式游标:非用

13、户明确声明而产生的游标.你根本看不到cursor这个关键字.2:显示游标:用户明确通过cursor关键字来声明的游标.B:什么是隐式游标:1:什么时候产生:会在执行任何合法的SQL语句(DML---INSERTUPDATEDELETEDQL-----SELECT)中产生.他不一定存放数据.也有可能存放记录集所影响的行数.如果执行SELECT语句,这个时候游标会存放数据.如果执行INSERTUPDATEDELETE会存放记录影响的行数.C:隐式游标叫什么名字:名字叫sql关于sql的游标变量到底有哪些呢?作用:返回最近一次执行SQL语句所涉及的游标相关信息

14、.因为每执行一次SQL语句,都会产生一个隐式游标.那么当前执行的SQL语句就是当前的隐式游标.sql%foundsql%notfoundsql%rowcountsql%isopenD:关于隐式游标的例子:createtable学生基本信息表(StuIDint,StuNamevarchar2(20))altertable学生基本信息表addconstraintPK_STUIDprimarykey(StuID)declarenumint:=0;beginnum:=#deletefrom学生基本信息表whereStuID=num;ifsql%notfo

15、undthendbms_output.put_line('该行数据没有发现');elsedbms_output.put_line('数据被发现并删除,影响的行数为:'

16、

17、sql%rowcount);endif;end;E:关于显示游标的例子:1:如何定义显示游标declarecursoris[select语句];declarecursormycurisselectempno,ename,jobfromscott.emp;2:如何打开游标:open;openmycur;3:如何通过游标来读取数据fetch

18、into4:如何关闭游标

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

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

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