- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MYSQL存储过程的技术
存储过程的概念
为什么使用存储过程
基本创建、删除语法
存储过程中的变量
BEGIN...END复合语句
流程控制结构语句
注释语法
使用权限
条件和异常处理程序
游标
;存储过程的概念:
所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。
与自定义函数的区别:
自定义函数有且只有一个返回值,就像普通的函数一样,可以直接在表达式中嵌入调用。
存储过程可以没有返回值,也可以有任意个输出参数,必须单独调用。
?
执行的本质都一样。只是函数有如只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
函数限制比较多,比如不能用临时表,只能用表变量。还有一些函数都不可用等等。而存储过程的限制相对就比较少。
?
一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
;为什么使用存储过程:
存储过程的优点:
存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
存储过程可以重复使用,可减少数据库开发人员的工作量。
安全性高,可设定只有某些用户才具有对指定存储过程的使用权。
;基本的创建、删除语法:
CREATE PROCEDURE sp_name ([proc_parameter[,...]])???
[characteristic ...] routine_body
默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来,可以在创建子程序的时候指定其名字为db_name.sp_name。
?
sp_name 存储过程的名字
proc_parameter指定参数为IN, OUT,或INOUT
characteristic 特征
routine_body 包含合法的SQL过程语句。
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
这个语句被用来移除一个存储程序或函数。即,从服务器移除一个制定的子程序。在MySQL 5.1中,你必须有ALTER ROUTINE权限才可用此子程序。这个权限被自动授予子程序的创建者。
IF EXISTS 子句是一个MySQL的扩展。如果程序或函数不存在,它防止发生错误。
;基本的创建、调用、删除语法:
delimiter //
DROP PROCEDURE IF EXISTS test //
CREATE PROCEDURE test /* 存储过程名 */
(IN inparms INT, OUT outparams varchar(32)) /* 输入参数 */
BEGIN /* 语句块头 */
DECLARE var CHAR(10); /* 变量声明 */
IF inparms = 1 THEN /* IF条件开始*/
SET var = hello; /* 赋值 */
ELSE
SET var = world;
END IF; /* IF结束 */
INSERT INTO t1 VALUES (var); /* SQL语句 */
SELECT name FROM t1 LIMIT 1 INTO outparams;
END
//
delim
您可能关注的文档
- LTE中CoMP研究.ppt
- MATLAB7.0使用详解_第8章M_文件和MATLAB.ppt
- MacOSX10_9_5系统快捷键.ppt
- Matlab北航教程第4章.ppt
- MATLAB的简介及使用.ppt
- MATLAB集成环境.ppt
- lv品牌历史.设计风格.经典作品.ppt
- MATLAB7.0使用详解_第19章Word和Excel环境下.ppt
- L_Linux编程基础.ppt
- MBA的管理学system解说.ppt
- 2025年生态采摘旅游园乡村旅游扶贫与乡村振兴研究.docx
- 2025年电动巡逻艇在航道水域执法的作业报告.docx
- 2025年电动巡逻艇水域作业人才培养策略研究报告.docx
- 2025年电动巡逻艇水域作业培训体系构建研究报告.docx
- 2025年电动巡逻车在卫星发射中心巡逻采购分析.docx
- 2025年电动巡逻艇在淡水湖泊水域作业性能改进报告.docx
- 2025年电动巡逻艇水域作业标准化流程与操作规范报告.docx
- 2025年电动巡逻艇水域作业装备升级改造项目可行性研究报告.docx
- 2025年电动汽车与储能技术双向互动(V2G)在电动汽车产业链中的价值链分析.docx
- 2025年直播电商用户购买决策心理机制探究.docx
文档评论(0)