存储过程主题知识讲座_第1页
存储过程主题知识讲座_第2页
存储过程主题知识讲座_第3页
存储过程主题知识讲座_第4页
存储过程主题知识讲座_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

Orecal存放过程存储过程主题知识讲座第1页存放过程:1:存放过程定义2:存放过程特点存储过程主题知识讲座第2页定义:

它是一组预先编译好Transact-SQL语句。将其放在服务器上,由用户经过指定存放过程名字来执行它。存放过程能够作为一个独立数据库对象,也能够作为一个单元被用户应用程序调用。存放过程能够接收和输出参数,返回执行存放过程状态值,还能够嵌套调用。存储过程主题知识讲座第3页特点:1:存放过程是预编译,而且经过优化后存放于SQL内存中,使用时无需再次编译,提升了工作效率。2:存放过程代码直接存放于数据库中,普通由客户端直接经过存放过程名字进行调用,降低了网络流量。加紧了系统速度。3:使用存放过程能够降低SQL注入式攻击,提升了系统安全性,执行存放过程用户需要含有一定权限才能使用存放过程。4:在同时进行主,从表以及多表间数据维护以及有效性验证时,使用存放过程比较方便,而且能够有效利用SQL事务处理机制。存储过程主题知识讲座第4页5:使用存放过程,能够实现存放过程设计和编码工作分开进行,只要将存放过程名、参数、及返回信息告诉编码人员即可。6:使用存放过程封装业务逻辑将限制应用程序可移植性;另外,假如要更改存放过程参数、返回数据、或者数据类型,需要修改应用程序相关代码,比较繁琐。存储过程主题知识讲座第5页存放过程语法结构:CREATEORREPLACEPROCEDURE过程名AS

申明语句段;BEGIN执行语句段EXEPTION异常处理语句段END;存储过程主题知识讲座第6页创建简单实例:--创建学生表CREATETABLESTUDENT(SNONUMBER(6),SNAMEVARCHAR2(25),PNONUMBER(6));--创建存放过程CREATEORREPLACEPROCEDURESTU_PROCASpnamestudent.sname%type;//pname

varchar2(25)BEGIN

SELECTSNAMEINTOpnameFROMSTUDENTWHERESNO=1;DBMS_OUTPUT.put_line(pname);END;--调用存放过程CALLSTU_PROC()存储过程主题知识讲座第7页带入参存放过程:--创建存放过程createorreplaceprocedurestu_proc3(s_nostudent.sno%type,s_namestudent.sname%type,

s_postudent.pno%type)isbegin

insertintostudent(sno,sname,pno)values(s_no,s_name,s_no);commit;

end;--调用存放过程Callstu_proc3(6,s_name,s_po);存储过程主题知识讲座第8页带出参存放过程:--创建存放过程CREATEORREPLACEPROCEDURESTU_PROC4(pnooutstudent.pno%type)AS

pnamevarchar2(25);BEGIN

SELECTSNAMEINTOpnameFROMSTUDENTWHERESNO=3;

DBMS_OUTPUT.put_line(pname);END;--调用存放过程declaressstudent.pno%type;

beginstu_proc4(ss);

end;存储过程主题知识讲座第9页带出入参存放过程:--创建存放过程CREATEORREPLACEPROCEDURESTU_PROC5(ssoinstudent.sno%type,pwooutstudent.pno%type,snaoutstudent.sname%type)AS

BEGIN

SELECTsname,pnointosna,pwoFROMSTUDENTWHEREstudent.sno=sso;DBMS_OUTPUT.put_line('名字:'||sna);DBMS_OUTPUT.put_line('pno:'||pwo);END;--调用存放过程declarepostudent.pno%type;sastudent.sname%type;

beginSTU_PROC5(2,po,sa);

end;存储过程主题知识讲座第10页异常处理CREATEORREPLACEPROCEDURESTU_PROC6(ssoinstudent.sno%type,

pwooutstudent.pno%type,snaoutstudent.sname%type)ASBEGIN

SELECTsname,pnointosna,pwoFROMSTUDENTWHEREstudent.sno=sso;

DBMS_OUTPUT.put_line('名字:'||sna);DBMS_OUTPUT.put_line('pno:'||pwo);

EXCEPTION

WHENNO_DATA_FOUNDTHENRAISE_APPLICATION_ERROR(-0,'ERROR:不存在!');END;疑问:存放过程异常处理中,不一样异惯用什么方式抛出,抛出后怎么处理没有看明白。(看了一些存放过程例子,有是在存放过程内部处理异常,有是在调用时处理异常。后者是不是因为存放过程内部抛出异常没有处理,造成调用时候必须处理异常?)存储过程主题知识讲座第11页存放过程事务处理1:事务用于确保数据一致性,由一组相关DML语句组成,该组DML语句所执行操作要么全部确认,要么全部取消。2:当执行事务操作(DML)时,Oracle会在被作用表上加锁,以预防其它用户改变表结构。同时也会在被作用行上加上行锁,以预防其它事务在对应行上执行类似DML操作。3:当执行事务提交或事务回滚时,Oracle会确认事务改变或回滚事务、结束事务、删除保留点、释放锁。4:提交事务(CONNIT)确认事务改变,结束当前事务,删除保留点,释放锁,使得当前事务中数据永久改变。5:保留点(SAVEPOINT)在当前事务中,标识事务保留点。存储过程主题知识讲座第12页6:回滚事务(ROLLBACK)回滚整个事务,删除该事务所定义全部保留点,释放锁,撤消全部对数据改变。7:回滚事务到指定保留点(ROLLBACKTOSAVEPOINT)回滚当前事务到指定保留点,丢弃该保留点创建后任何改变,释放锁。注意:当执行DDL,DCL语句时,会自动提交事务。DDL:数据库模式定义语言,关键字:create

DML:数据操纵语言,关键字:Insert、delete、update

DCL:数据库控制语言,关键字:grant、remove

DQL:数据库查询语言,关键字:select存储过程主题知识讲座第13页事务处理简单实例:CREATEORREPLACEPROCEDURESTU_PROC7ASBEGIN

insertintoemp(empno,ename,job)values(8000,'sb','clear');

SAVEPOINT

SAVEPOINT1;

insertintoemp(empno,ename,job)values(8000,'sb2','clear');

updateempsetempno=8001whereename='sb2';commit;EXCEPTION

WHENdup_val_on_indexTHENrollbacktosavepointSAVEPOINT1;RAISE_APPLICATION_ERROR(-2,'ERROR:违反唯一约束条件!');END;(疑问:使用rollback和rollbacktosavepoint最终调用存放过程结果一致,数据库并没有保留savinpoint1

这个保留点数据,而是全部回滚了。)存储过程主题知识讲座第14页Mybatis项目中调用oracle存放过程:--创建存放过程CREATEORREPLACEPROCEDURE

STU_PROC6(ssoinstudent.sno%type,pwooutstudent.pno%type,snaoutstudent.sname%type)AS

BEGIN

SELECTsname,pnointosna,pwoFROMSTUDENTWHEREstudent.sno=sso;END;存储过程主题知识讲座第15页Mybatis配置文件存放过程:<selectid=“getSnameBySno”statementType=“CALLABLE”parameterType=“java.util.Map”>

{callSTU_PROC6(#{val1,mode=IN,jdbcType=NUMBER},

#{val2,mode=OUT,jdbcType=VARCHAR},

#{val3,mode=OUT,jdbcType=NUMBER})}</selected>常规映射文件<selectid="findIdsByYear"parameterType="java.lang.String“resultMap="BaseResultMap">SQL…….</select>存储过程

温馨提示

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

评论

0/150

提交评论