MySQL的存储过程解析分析.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL的存储过程解析分析

MySQL的存储过程解析1、存储过程简介我们使用的sql语言,需要先编译然后才会执行,然而存储过程(procedure)是为了万恒特定功能的sql语句集合,经编译后存储在数据库中,用户通过存储过程的名字并给定参数或传值的方式来调用执行他。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有控制语句和sql语句组成。适用于不同的平台和应用程序执行相同的函数。存储过程具有以下优点:存储过程增强了sql语言的功能和灵活性。存储过程可以用流控制语句的编写,具有很强的灵活性,可以完成复杂的判断和较为复杂的运算。存储过程允许的标准组件是编程。存储过程被创建以后,在程序中多次被调用,而不必进行重新编写。对存储过程的修改不会影响程序源代码的执行。存储过程可以执行较快的执行速度。若某一操作中包含大量的事物处理代码或分别被多次执行,那么储存过程要比批处理的执行速度快很多。因为存储过程是预编程的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理需要每次进行编译和优化,速度相对要慢。(总结:存储过程比批处理要快很对,原因是:前者进行预编译。)存储过程可以减少网络流量。针对数据库操作的增删改查,存储过程在网路中只是传递该调用的语句。存储过程可看做是一种安全机制来充分利用。可以对存储过程的权限进行设置,进而事项对响应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证数据的安全。(总结:个人感觉,不太实用)2、MySQL存储过程的创建格式格式:create procedure 过程名([过程参数[,…]])[特性…]过程体。需要注意的是:delimiter //和delimiter ;两句,delimiter 是分隔符的意思,因为MySQL默认以“;” 为分隔符,如果没有生命分隔符,那么编译器会把编译器存储过程当成sql语句进行处理,则存储过程的编译过程会报错,所以要实现用delimiter关键字申明当前段分隔符,这样MySQL才会将”;” 当做存储过程的代码,而不会执行这些代码,当然用完之后要用delimiter ; 进行分割符的还原。存储过程根据需要可能有输入、输出或者是输入输出;过程体的开始和结束是以begin和end进行标示的,后边不加”;” 参数MySQL的储存过程共存在三种类型的参数分别是:IN 、OUT 和INOUT 格式为:create procedure 过程名([IN |OUT|INOUT[参数名数据类型…]])IN 输入参数:标示该参数必须在调用存储过程时制定,存储过程中进行参数的修改不能被返回,为默认值。OUT输出参数:该值在存储过程中可以被改变,返回修改后的值。INOUT输入输出参数:调用时候可以进行修改和返回。IN参数输入例子:创建一个名为demo_in的存储过程执行结果:输入一个参数后,可以获取新输入的值。OUT输出参数例子:创建一个demo_out的过程执行结果:可以看出OUT 无法向过程里进行传值,过程中的值可以正确的返回。INOUT参数的例子:创建一个名为demo_inoutde过程名执行结果:可以看出既可以输入参数也可以返回参数。变量变量定义Declare variable_name[,variable_name…] datatype [default value]其中datatype为MySQL的数据类型,如int float date varchar例如:declarel_intint default 4000;declarel_numeric number(8,2) default 10.99;declarel_date date default ‘1990-09-11’;declarel_datetimedatetime default ‘1990-09-11 24:00:00’;declarel_varcharvarchar(20) default ‘you are very good’;变量赋值Set 变量名=表达式值用户变量客户端使用用户变量例子:使用@开始定义变量存储过程是使用用户变量案例:跨存储过程的用户变量间的传递:注释MySQL存储过程的注释方式是:--例子:3、MySQL存储过程的查询我们可以用select name from mysql.proc where db=’数据库名’;或者select routine_name from information_schema.routines where routine_schema=数据库名;或者show procedure status where db=数据库名; 进行查询。SHOW CREATE PROCEDURE 数据库.存储过程名;就可以查看当前存储过程的详细。4、

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档