加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL存储进程理会

发布时间:2017-06-07 12:13:48 所属栏目:编程 来源:站长网
导读:副问题#e# 1. 存储进程简介 我们常用的操纵数据库说话SQL语句在执行的时辰必要要先编译,然后执行,而存储进程(StoredProcedure)是一组为了完成特定成果的SQL语句集,经编译后存储在数据库中,用户通过指定存储进程的名字并给定参数(假如该存储进程带有
副问题[/!--empirenews.page--]

1. 存储进程简介

我们常用的操纵数据库说话SQL语句在执行的时辰必要要先编译,然后执行,而存储进程(StoredProcedure)是一组为了完成特定成果的SQL语句集,经编译后存储在数据库中,用户通过指定存储进程的名字并给定参数(假如该存储进程带有参数)来挪用执行它。

一个存储进程是一个可编程的函数,它在数据库中建设并生涯。它可以有SQL语句和一些非凡的节制布局构成。当但愿在差异的应用措施或平台上执行沟通的函数,可能封装特定成果时,存储进程长短常有效的。数据库中的存储进程可以看做是对编程中面向工具要领的模仿。它应承节制数据的会见方法。

存储进程凡是有以下利益:

(1).存储进程加强了SQL说话的成果和机动性。存储进程可以用流节制语句编写,有很强的机动性,可以完成伟大的判定和较伟大的运算。

(2).存储进程应承尺度组件是编程。存储进程被建设后,可以在措施中被多次挪用,而不必从头编写该存储进程的SQL语句。并且数据库专业职员可以随时对存储进程举办修改,对应用措施源代码毫无影响。

(3).存储进程能实现较快的执行速率。假如某一操纵包括大量的Transaction-SQL代码或别离被多次执行,那么存储进程要比批处理赏罚的执行速率快许多。由于存储进程是预编译的。在初次运行一个存储进程时查询,优化器对其举办说明优化,而且给出最终被存储在体系表中的执行打算。而批处理赏罚的Transaction-SQL语句在每次运行时都要举办编译和优化,速率相对要慢一些。

(4).存储进程能过镌汰收集流量。针对统一个数据库工具的操纵(如查询、修改),假如这一操纵所涉及的Transaction-SQL语句被组织程存储进程,那么当在客户计较机上挪用该存储进程时,收集中传送的只是该挪用语句,从而大大增进了收集流量并低落了收集负载。

(5).存储进程可被作为一种安详机制来充实操作。体系打点员通过执行某一存储进程的权限举办限定,可以或许实现对响应的数据的会见权限的限定,停止了非授权用户对数据的会见,担保了数据的安详。

2. 关于MySQL的存储进程

存储进程是数据库存储的一个重要的成果,可是MySQL在5.0早年并不支持存储进程,这使得MySQL在应用上大打折扣。亏得MySQL 5.0终于开始已经支持存储进程,这样即可以大大进步数据库的处理赏罚速率,同时也可以进步数据库编程的机动性。

3. MySQL存储进程的建设

(1). 名目

MySQL存储进程建设的名目:CREATE PROCEDURE 进程名 ([进程参数[,...]])

[特征 ...]进程体

这里先举个例子:

   

mysql> DELIMITER //

mysql> CREATE PROCEDURE proc1(OUT s int)

    -> BEGIN

    -> SELECT COUNT(*) INTO s FROM user;

    -> END

    -> //

mysql> DELIMITER ;

注:

(1)这里必要留意的是DELIMITER //和DELIMITER ;两句,DELIMITER是支解符的意思,由于MySQL默认以";"为脱离符,假如我们没有声明支解符,那么编译器会把存储进程当成SQL语句举办处理赏罚,则存储进程的编译进程会报错,以是要事先用DELIMITER要害字阐明当前段脱离符,这样MySQL才会将";"当做存储进程中的代码,不会执行这些代码,用完了之后要把脱离符还原。

(2)存储进程按照必要也许会有输入、输出、输入输出参数,这里有一个输出参数s,范例是int型,假若有多个参数用","支解开。

(3)进程体的开始与竣事行使BEGIN与END举办标识。

这样,我们的一个MySQL存储进程就完成了,是不是很轻易呢?看不懂也不要紧,接下来,我们具体的讲授。

(2). 声明支解符

着实,关于声明支解符,上面的注解已经写得很清晰,不必要多说,只是轻微要留意一点的是:假如是用MySQL的Administrator打点器材时,可以直接建设,不再必要声明。

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读