2.存储过程是数据库中的一个主要工具,用户通过指定存储过程的名字并给出参数(如果该存储过 程带有参数)来实行它。

3.存储过程是由流掌握和SQL语句书写的过程,这个过程经编译和优化后存储在数据库做事器中。

4.存储过程可由运用程序通过一个调用来实行,而且许可用户声明变量。

phpmysqli存储过程mysql存储进程具体讲授及完全实例下载 React

5.同时,存储过程可以吸收和输出参数、返回实行存储过程的状态值,也可以嵌套调用。

二、存储过程优点

1.增强了SQL语句的功能和灵巧性

2不须要反复建立一系列处理步骤,担保了数据的完全性

3.降落了网络的通信量,客户端调用存储过程只须要传存储过程名和干系参数即可,与传输SQL语 句比较自然数据量少了很多

4.增强了利用的安全性,通过存储过程可以使没有权限的用户在掌握之下间接地存取数据库,从而 担保数据的安全。

5.可以实现集中掌握,当规则发生改变时,只须要修正存储过程就可以。

三、存储过程缺陷

1.调试不是很方便。

2.可能没有创建存储过程的权利。

3.重新编译问题。

4.移植性问题。

四、变量

1.用户变量:以”@”开始,形式为”@变量名。
” 用户变量跟MySQL客户端是绑定的,设置的变量,只对当前用户利用的客户端生效.

2.全局变量:定义时,以如下两种形式涌现,set GLOBAL 变量名 或者 set @@global.变量名。
show global variables; 对所有客户端生效。
只有super权限才可以设置全局变量。

3.会话变量:只对连接的客户端有效。
一旦客户端失落去连接,变量失落效。
show session variables;

4.局部变量:浸染范围在begin到end语句块之间。

4.1在该语句块里设置的变量declare语句专门用于定义局部变量。
declare numeric number(8,2)【MySQL的数据类型,如:int,float, date, varchar(length)】 default 9.95;

4.2变量赋值:SET 变量名 = 表达式值 [,variable_name= expression ...],set numeric=1.2或者SELECT 2.3 into @x;

五、mysql 存储程序

1.基本语法:create procedure 过程名 ([过程参数[,...]])[特性 ...] 过程体;先看基本例子

第一种:

第二种:

把稳:

1).这里须要把稳的是delimiter // 和delimiter ;;两句,delimiter是分割符的意思,由于MySQL默认以\"大众;\"大众为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,以是要事先用delimiter关键字申明当前段分隔符,这样MySQL才会将\公众;\公众当做存储过程中的代码

2).存储过程根据须要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用\"大众,\公众分割开。

3).过程体的开始与结束利用begin与emd进行标识。

2.调用存储过程基本语法:call sp_name()

3.参数:MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:

create procedure([[in |out |inout ] 参数名 数据类形...])

in输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修正该参数的值不能被返回,为默认值

out 输出参数:该值可在存储过程内部被改变,并可返回

inout 输入输出参数:调用时指定,并且可被改变和返回

3.1in参数例子:

3.2out参数创建例子

3.3inout参数创建例子

3.4存储过程中的IF语句(if then elseif then else end if)

3.5存储过程中的case when then

3.6存储过程中的while do … end while语句

3.7存储过程中的repeat … until end repeat语句

这个REPEAT循环的功能和前面WHILE循环一样,差异在于它的实行后检讨是否知足循环条件(until i>=5),而WHILE则是实行前检讨(while i<5 do)。

不过要把稳until i>=5后面不要加分号,如果加分号,便是提示语法缺点。

3.8存储过程中的loop ··· end loop语句

利用LOOP编写同样的循环掌握语句要比利用while和repeat编写的要繁芜一些:在循环内部加入了IF……END IF语句,在IF语句中又加入了LEAVE语句,LEAVE语句的意思是离开循环,LEAVE的格式是:LEAVE 循环标号。

4.游标的利用 :定义游标 ,打开游标 ,利用游标 ,关闭游标例子

5.MySQL存储过程的查询

5.1.查看某个数据库下面的存储过程

select name from mysql.proc where db=’数据库名’;

或者

select routine_name frominformation_schema.routines where routine_schema='数据库名';

或者

show procedure status where db='数据库名';

5.2.查看存储过程的详细

show create procedure 数据库.存储过程名;

6、MySQL存储过程的修正

ALTER PROCEDURE:变动用CREATE PROCEDURE 建立的预先指定的存储过程,其不会影响干系存储过程或存储功能。

7.删除存储过程

drop procedure sp_name //注释函数名

出处:http://www.cnblogs.com/sztx/