1、注意事项
(1)sqlyog 存储笔记案例 ,里面的案例在dos演示
(2)sqlyog 这个第三方客户端,不支持BEGIN 和 END
(3)存储过程是不能修改的,非要修改,只能删除了,重新建
2、存储过程总结
一、创建
(1)语法
CREATE PROCEDURE 存储过程的名称(【IN/OUT/INOUT】 参数名 参数类型)
BEGIN
主体
END
(2)类似于java的方法
修饰符 返回类型 方法名(参数列表){
方法体
}
(3)参数对应的in、out、inout的意思
IN 代表该参数 作为输入(传统意义的参数)
OUT 代表该参数 作为输出 (传统意义的返回值)
INOUT 代表该参数既可以作为输入又可以作为输出 (参数+返回)
支持:多个IN、多个OUT、多个INOUT
支持:无参
(4)主体
增删改查语句都可以、变量、循环、条件等
每条SQL语句结尾分号
DELIMITER 结束符
默认结束符:分号,假如不想分号结尾,则可以自己设置
二、调用存储过程
(1)调用无参的存储过程
CALL 存储过程名()
(2)调用in类型参数的存储过程
CALL 存储过程名(常量值)
(3)调用out类型参数的存储过程
call 存储过程名(@变量名) $$
select @变量名 $$
(4)调用inout类型参数的存储过程
set @变量名=值 $$
CALL 存储过程名(@变量名) $$
SELECT @变量名 $$
三、用户变量:
定义语法: set @变量名 ;
赋值语法:
(1)方式一:普通赋值
set @变量名:=值;或set @变量名=值;
select @变量名:=值;
(2)方式二:通过查询结果为变量赋值
select 字段|表达式 into 变量名
from 表名 【where 条件】
3、创建无参的存储过程
案例:创建存储过程,实现 查询beauty表的大于3号id的记录
DELIMITER $$
CREATE PROCEDURE mypro1()
BEGIN
SELECT * FROM beauty WHERE id>3;
END $$
4、创建in类型参数的存储过程
案例:根据女神名称,查询男神信息
CREATE PROCEDURE mypro2(IN bname VARCHAR(20))
BEGIN
SELECT bo.* FROM boys bo
JOIN beauty b ON bo.id=b.boyfriend_id
WHERE b.name=bname;
END $$
5、创建多个in类型参数的存储过程
CREATE PROCEDURE mypro3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
SELECT COUNT(*) FROM admin
WHERE admin.username=username AND admin.password=PASSWORD;
END $$
6、创建out类型参数的存储过程
CREATE PROCEDURE mypro4(
IN username VARCHAR(20),
IN PASSWORD VARCHAR(20),
OUT result INT)
BEGIN
SELECT COUNT(*) INTO result FROM admin
WHERE admin.username=username AND admin.password=PASSWORD;
END $$
调用存储过程
SELECT @a $$
CALL mypro4('','',@a) $$
7、创建out类型参数的存储过程
CREATE PROCEDURE mypro5(IN a INT,IN b INT,OUT c INT,OUT d INT)
BEGIN
SET c=a*2;
SET d=b*2;
END $$
调用存储过程
CALL mypro5('','',@a,@b) $$
SELECT @a $$
8、创建inout类型参数的存储过程
CREATE PROCEDURE mypro6(INOUT age INT)
BEGIN
SET age=age*3;
END $$
9、删除存储过程
语法
DROP PROCEDURE 存储过程名
案例实操
DELIMITER ;
DROP PROCEDURE mypro6 ;
10、查看某个存储过程
语法
SHOW CREATE PROCEDURE 存储过程名
案例实操
SHOW CREATE PROCEDURE mypro1;