禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
express
目录编程
实际操做中会出现,对于一些操做须要多条语句的配合才能完成。这里能够用编程中的顺序结构来类比,当我每次须要完成这个操做都须要把完整的 SQL 语句写一遍,这么写不只麻烦,还容易出错。咱们在编程中是怎么优化这个问题的?就是将固定操做的代码块封装成一个函数,而后经过参数的传递实现函数调用。所谓存储过程就与编程中的函数有相似之处,是一条或多条 MySQL 语句的集合,也能够看成是批处理文件。存储过程的语句编写会稍微复杂一些,同时也会有权限问题,可是存储过程的优点仍是很明显的,在于简捷、安全、性能好 3 个方面:安全
定义存储过程要使用 CREATE PROCEDURE 定义,在语句后面要给出存储过程名,若能够接受参数就须要在括号内罗列出来。语法框架为:服务器
CREATE PROCEDURE name(variable1,variable2……) BEGIN --MySQL 语句 END;
建立存储过程时须要指定哪些变量须要输入和输出,用 OUT 关键字指定,输入用 IN 关键字指定,若同时须要输入和输出,用 INOUT 关键字指定。框架
DELIMITER //
执行存储过程的语句为 CALL name(),若是须要传参就要在括号之间填充参数。ide
存储过程将在服务器上供调用,咱们能够把创建的存储过程删掉,使用 DROP PROCEDURE 删除语句实现。
若指定的存储过程不存在会报错,能够使用下列语句实现异常处理。函数
DROP PROCEDURE IF EXISTS使用参数
在这里给出 3 个参数,这些参数是此存储过程所接受的,每一个参数必须指定数据类型,例以下面就使用了十进制数字。OUT 就说明这些参数是须要返回给调用者的,操做完值以后就使用 INTO 将值注入变量之中。而对于存储过程的运行的代码就封装在 BEGIN 和 END 语句以内。
此时用 CALL 语句调用存储过程后,返回的变量将会被调出来。MySQL 中的变量都是以 @开始的,因为存储过程有 3 个参数,所以也必须传 3 个参数。
这个时候就使用 SELECT 语句依次查看变量。性能
建立时须要用关键字 IN 指定传入的参数。
传参就要按照参数表填写变量,这个顺序不能有错。优化
在存储过程当中引入分支处理的代码框架为:网站
IF expression1 THEN --MySQL 语句段 ELSEIF expression2 THEN --MySQL 语句段 ELSE --MySQL 语句段 END IF;
这个实例实现的功能就更强了,那么这里解释一下选择结构的功能。IF 语句检查变量是都是真,真的状况下用一个 SELECT 语句将值注入变量中,若为假则用另外一个 SELECT 语句将值注入变量。
如今传入 2 组参数进去试试看。
使用如下语句能够检查建立存储过程的语句。
SHOW CREATE PROCUDURE name;
如下语句能够查看存储过程的建立信息。
SHOW PROCUDURE STATUS LIKE name;