1、存储过程介绍
迄今为止,我们学过的大多数SQL语句都是针对一个或多个表的单条语句。但是并不是所有的操作都是可以用一条语句来完成的,经常有一些操作是需要多条语句配合才能完成。我们引入的存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
2、存储过程创建、调用、修改、删除
① 创建
语法:
DELIMITER $$ //更改mysql默认的分符号
CREATE PROCEDURE 名称()
BEGIN
select * from user;
END
$$//结束存储过程分割符
DELIMITER ;//还原存储过程分隔符
示例
DELIMITER $$
CREATE PROCEDURE proc_name_demo()
BEGIN
select * from user;
END
$$
DELIMITER;
②调用
语法:call 名称()
示例:call proc_name_demo()
③修改
ALTER PROCEDURE 名称 [characterustic...]
- {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}:指定子程序使用存储过程的限制。
CONTAINS SQL:说明子程序包含SQL语句,但是不包含写数据语句
NO SQL:说明子程序不包含SQL语句
READS SQL DATA:说明子程序包含读数据读数据语句
MODIFIES SQL DATA:说明子程序包含写数据语句
- SQL SECURITY {DEFINER | INVOKER}:指明谁有权限执行,默认值:DEFINER
DEFINER:只有定义者才能执行
INVOKER:拥有权限的调用者才可以执行
- COMMNET:注释信息
ps:
目前,MySQL还不提供对已存在的存储过程的代码修改
如果,一定要修改存储过程的内容,必须,先将存储过程删除之后,再重新编写代码,或者创建一个新的存储过程
④删除
语法:DROP PROCEDURE 名称;
示例:DROP PROCEDURE proc_namedemo;
示例2:DROP PROCEDURE if exists proc_namedemo;//删除存在的存储过程