mysql的存储过程解析

mysql的存储过程解析

ID:32658201

大小:112.65 KB

页数:29页

时间:2019-02-14

mysql的存储过程解析_第1页
mysql的存储过程解析_第2页
mysql的存储过程解析_第3页
mysql的存储过程解析_第4页
mysql的存储过程解析_第5页
资源描述:

《mysql的存储过程解析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、MySQL的存储过程解析1、存储过程简介我们使用的sql语言,需要先编译然后才会执行,然而存储过程(procedure)是为了万恒特定功能的sql语句集合,经编译后存储在数据库中,用户通过存储过程的名字并给定参数或传值的方式来调用执行他。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有控制语句和sql语句组成。适用于不同的平台和应用程序执行相同的函数。存储过程具有以下优点:1)、存储过程增强了sql语言的功能和灵活性。存储过程可以用流控制语句的编写,具有很强的灵活性,可以完成复杂的判断和较为复杂的运算。2)、存储过程允许的标准组件是编程。

2、存储过程被创建以后,在程序中多次被调用,而不必进行重新编写。对存储过程的修改不会影响程序源代码的执行。3)、存储过程可以执行较快的执行速度。若某一操作中包含大量的事物处理代码或分别被多次执行,那么储存过程要比批处理的执行速度快很多。因为存储过程是预编程的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理需要每次进行编译和优化,速度相对要慢。(总结:存储过程比批处理要快很对,原因是:前者进行预编译。)4)、存储过程可以减少网络流量。针对数据库操作的增删改查,存储过程在网路中只是传递该调用的语句。5)、存

3、储过程可看做是一种安全机制来充分利用。可以对存储过程的权限进行设置,进而事项对响应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证数据的安全。(总结:个人感觉,不太实用)2、MySQL存储过程的创建1)、格式格式:createprocedure过程名([过程参数[,・・・]])[特性…]过程体。需要注意的是:delimiter//和delimiter;两句,delimiter是分隔符的意思,因为MySQL默认以“广为分隔符,如果没有生命分隔符,那么编译器会把编译器存储过程当成sql语句进行处理,则存储过程的编译过程会报错,所以要实现用delim

4、iter关键字申明当前段分隔符,这样MySQL才会将弩’当做存储过程的代码,而不会执行这些代码,当然用完之后要用delimiter;进行分割符的还原。存储过程根据需要可能有输入、输出或者是输入输出;过程体的开始和结束是以begin和end进行标示的,后边不加兀”2)、参数MySQL的储存过程共存在三种类型的参数分别是:IN.OUT和INOUT格式为:createprocedure过程名([IN

5、OUT

6、INOUT[参数名数据类型・・・]])IN输入参数:标示该参数必须在调用存储过程时制定,存储过程中进行参数的修改不能被返回,为默认值。OUT输出参数:该值

7、在存储过程中可以被改变,返回修改后的值。INOUT输入输出参数:调用时候可以进行修改和返回。IN参数输入例子:创建一个名为demo_in的存储过程mysql>delimiter//mysql>createproceduredemo_in(INsint)->begin->selects;->sets-2;->selects;->end;->//QueryOK,0rowsaffectedmysql>delimiter;执行结果:mysql>calldemom(1);I1I1rowinsetI2

8、1rowinsetQueryOK,0rowsaffected输入

9、一个参数后,可以获取新输入的值。OUT输出参数例子:创建一个demo_out的过程mysql>delimiter//mysql>createproceduredemo_out(OUTsint)->begin->selects;->sets=2;->selects;■>end//QueryOK,0rowsaffectedmysql>delimiter;执行结果:mysql>set@s«1;QueryOK,0rowsaffectedmysql>calldemoout(@s);++INULL

10、1rowinsec++I3I++I2I1rowinset可以看出OU

11、T无法向过程里进行传值,过程中的值可以正确的返回。INOUT参数的例子:创建一个名为demo_inoutde过程名mysql>delimiter//mysql>createproceduredemo_inout(INOUTsint)->begin->selects;■>secs»2;•>selects;QueryOK,0rowsaffectedmysql>delimiter;执行结果:mysql>set@s=l;QueryOK,0rowsaffectedImysql>calldemo_inout(@s);1rowinsetQuery0Kz0rowsaff

12、ectedmysql>select@s;++I@3I1rowinset可以看出既

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

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

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