什么是存储过程?为什么要用存储过程?
存储过程是具有名字的一段代码,完成一个特定的功能。存储过程保存在数据字典中
1.执行时简单(名字+参数)
2.存储过程中可以有一个、多个SQL语句
使用场景:(Mysql存储过程相对功能较弱)
1.将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用
2.批量处理 sql+循环
3.统一接口
语法:
delimiter $$-------定义结束标志,delimiter是分隔符的意思
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body------------------------(过程体)
proc_parameter:
[ IN | OUT | INOUT ] param_name type
end $$
delimiter ;--------最后将结束标志改为分号
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
存储过程参数(in、out、inout)
1.需要输入------in参数
值 --100、赋值的变量 --set @xv=100; @xv
mysql> DELIMITER $$
mysql> CREATE PROCEDURE cou1(IN NAME VARCHAR(2))
-> BEGIN
-> SELECT dept_no FROM departments WHERE dept_name=NAME;
-> END $$
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> call cou1('b')