什么是存储过程
简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;
ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;
有哪些特性
有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;
函数的普遍特性:模块化,封装,代码复用;
速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;
创建存储过程
//创建存储过程
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `t204`.`v_person`(page INT ,rows1 INT)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
DECLARE per INT;
SET per:=(page-1)*rows1;
SET @pe=CONCAT('select * from person limit ',per,',',rows1,'');
PREPARE per1 FROM @pe;
EXECUTE per1;
END$$
DELIMITER ;
//调用方法
CALL v_person(1,5);
执行以上存储结果,验证是否正确,如下图,结果OK:
1 queries executed, 1 success, 0 errors, 0 warnings
查询:CREATE PROCEDURE `t204`.`v_person1`(page INT ,rows1 INT) BEGIN DECLARE per INT; SET per:=(page-1)*rows1; SET @pe=CONCAT('select ...
共 0 行受到影响
执行耗时 : 0.080 sec
传送时间 : 1.209 sec
总耗时 : 1.290 sec
id name age sex
e7f64346-5cc0-11e8-bc76-54ee75bbb0cd 张三4 18 女
e29d5a46-5cc0-11e8-bc76-54ee75bbb0cd 张三3 16 女
d8f016c8-5cc0-11e8-bc76-54ee75bbb0cd 张三2 17 男
ced967e6-5cc0-11e8-bc76-54ee75bbb0cd 张三1 16 19
234a024d-5b5e-11e8-bc76-54ee75bbb0cd 张三 18 男