sql温习---存储过程

存储过程:

优点:一个sql的函数,已经预编译过。调用简单,执行比较快,对权限有比较好控制。

缺点:执行过程没有日志(中间数据表修改结果不算),不方便定位问题。中间操作多表过程锁表,不能利用缓存组件也会造成执行效率低

基本语法:

CREATE PROCEDURE  过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

drop PROCEDURE if exists `test_procedure`;
delimiter ;; //构建结束符号。在sql编译器中,本来就会把;作为结束;
create DEFINER=`root`@`localhost` procedure `test_procedure`(IN a int,OUT b int)//IN输入参数,OUT输出参数,INOUT 既是输入又是输出
BEGIN
set b=a+4;

end ;;

delimiter;//
分隔符

MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原


验证结果

call test_procedure(9,@q);
select @q as sum;

我目前用到的应用:利用存储过程检查表结构,以此为条件

学习的时间不一定要特定安排
原文地址:https://www.cnblogs.com/zhongzheng123/p/8056603.html