在MYSQL 5中,终究引入了存储过程这一新特征,这将大大加强MYSQL 的数据库处置能力,在本文中,将指点读者快速控制MYSQL 5的存储过程的根基学问,率领用户入门。
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(若是该存储过程带有参数)来施行它。存储过程可由使用法式通过一个挪用来施行,并且答应用户声明变量 。同时,存储过程能够领受和输出参数、前往施行存储过程的形态值,也能够嵌套挪用。
(1)削减收集通信量。挪用一个行数不多的存储过程与间接挪用SQL语句的收集通信量可能不会有很大的不同,可是若是存储过程包含上百行SQL语句,那么其机能绝对比一条一条的挪用SQL语句要高得多。
(2)施行速度更快。存储过程建立的时候,数据库曾经对其进行了一次解析和优化。其次,存储过程一旦施行,在内存中就会保留一份这个存储过程,如许下次再施行同样的存储过程时,能够从内存中间接中读取。
(3)更强的平安性。存储过程是通过向用户授予权限(而不是基于表),它们能够供给对特定命据的拜候,提高代码平安,好比防止 SQL注入。
1 可移植性方面:当从一种数据库迁徙到别的一种数据库时,不少的存储过程的编写要进行部门点窜。
在MYSQL中,保举利用MYSQL Query Browswer(这个东西去进行存储过程的开辟和办理。下面分步调来进修MYSQL中的存储过程。


在存储过程中,凡是要输入良多SQL语句,而SQL语句中每个语句以分号来竣事,因而要告诉存储过程,什么位置是意味着整个存储过程竣事,所以我们在编写存储过程前,先定义分隔符,我们这里定义“//”为分隔符,我们利用DELIMITER //如许的语法,就能够定义竣事符了,当然你能够本人定义其他喜好的符号。
1)起首在定义好终结符后,利用CREATE PROCEDURE+存储过程名的方式建立存储过程,LANGUAGE选项指定了利用的言语,这里默认是利用SQL。
2)DETERMINISTIC环节词的感化是,当确定每次的存储过程的输入和输出都是不异的内容时,能够利用该环节词,不然默认为NOT DETERMINISTIC。
3) SQL SECURITY环节词,是暗示挪用时查抄用户的权限。当值为INVOKER时,暗示是用户挪用该存储过程时查抄,默认为DEFINER,即建立存储过程时查抄。
挪用存储过程的方式很简单,只需要利用call号令即可,后面跟要挪用存储过程的名称及输入的变量列表,好比:
能够用ALTER的语法去点窜存储过程的次要特征和参数,要点窜其存储过程的主体部门的话,必必要先删除然后再重建。好比下面点窜存储过程num_from_employee的定义。将读写权限改为MODIFIES SQL DATA,并指明挪用者能够施行。代码施行如下:
下面讲解下MYSQL 5存储过程中,若何定义变量。必需显式地在存储过程的一起头声明变量,并指出它们的数据类型,一但声了然变量后,就能够在存储过程中利用,定义变量的语法如下:
一旦定义好变量,就能够在存储过程中对其进行赋初值,并进行各类相关的操作,好比:
当有良多IF语句时,就该当考虑利用CASE语句了,它是多分支选择语句,有两种写法:
MYSQL中的游标是一个十分主要的概念。游标供给了一种对从表中检索出的数据进行操作的矫捷手段,就素质而言,游标现实上是一种能从包罗多条数据记实的成果集中每次提取一笔记录的机制。MYSQL中的游标的语法如下:
暗示将从table1表当选取col1列的内容放到游标curl中,即每次游标遍历的成果都放在curl中,要留意游标只能向前遍历,而不克不及向后,而且留意,游标不克不及更新,最初封闭游标。