欢迎来到天天文库
浏览记录
ID:34724630
大小:115.68 KB
页数:6页
时间:2019-03-10
《mysql存储过程学习笔记--建立简单的存储过程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Mysql存储过程学习笔记--建立简单的存储过程我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一、存储过程 存储过程(StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。而我们常用的操作数据库语言SQL语句在执行
2、的时候需要要先编译,然后执行,所以执行的效率没有存储过程高。 存储过程优点如下:重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。提高性能。存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。 存储过程简单语法:?123
3、CREATEPROCEDURE存储过程名称( 输入输出类型变量名称类型, 456789 输入输出类型变量名称类型 )BEGIN --声明,语句要完成的操作,增删改查。。。END二、实例 例子中的存储过程均使用mysql作为例子。 表结构如下:DROPTABLEIFEXISTS`person`;CREATETABLE`person`( `id`int(11)NOTNULLAUTO_INCREMENT, `username`varchar(255)DEFAULTNULL, `age`int(11)DEFAULTNULL, `passw
4、ord`varchar(255)DEFAULTNULL, PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=11DEFAULTCHARSET=utf8; 1、只带IN(输入参数)的存储过程 表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值.DROPPROCEDUREIFEXISTSproc_person_findById;--创建存储过程CREATEPROCEDUREproc_person_findById( innint)BEGIN SELECT*FRO
5、Mpersonwhereid=n;END--定义变量SET@n=2;--调用存储过程CALLproc_person_findById(@n); 调用结果如下: 2、只带OUT(输出参数)的存储过程 该值可在存储过程内部被改变,并可返回。DROPPROCEDUREIFEXISTSproc_person_getCount--创建存储过程CREATEPROCEDUREproc_person_getCount( outnint(11))BEGIN SELECTCOUNT(*)INTOnFROMperson;END--调用存储过程CALLpro
6、c_person_getCount(@n);SELECT@nas'总数'; 调用结果如下: 3、带IN(输入参数)和OUT(输出参数)的 调用时指定,并且可被改变和返回DROPPROCEDUREIFEXISTSproc_person_findInfoById;--创建存储过程CREATEPROCEDUREproc_person_findInfoById( INnINT(11), OUTpusernameVARCHAR(255), OUTpageINT(11))BEGIN SELECTusername,ageINTOpuser
7、name,pageFROMpersonWHEREid=n;END--定义变量SET@id=2;--调用存储过程CALLproc_person_findInfoById(@id,@username,@age);SELECT@usernameas'用户名',@age'年龄'; 调用结果如下: 4、带INOUT(输入输出)参数的存储过程--输入输出DROPPROCEDUREIFEXISTSproc_person_get_age;--创建存储过程CREATEPROCEDUREproc_person_get_age(INOUTnINT(11))BEGI
8、NSELECTageINTONFROMpersonWHEREid=n;ENDSET@id=1;CALLproc_perso
此文档下载收益归作者所有