创建语法 create procedure 存储过程名(参数列表) begin 存储过程体(sql语句) end 注意:1. 参数列表包括三部分(参数模式,参数名,参数类型) 参数模式包括: IN :该参数需要传入值 OUT:该参数可以作为返回值 INOUT: 该参数既需要传入值,又可以返回值 2. 如果存储体只有一句话,Begin end可以省略 3. 存储体中sql语句必须加分号,存储过程结束的标记可以通过 delimiter 重新设置
调用语法 call 存储过程名(实参列表)
删除语法 语法: drop procedure 存储过程名; 一次只能删除一个。
查看存储过程信息 show create procedure 存储过程名;
函数
函数只能有一个返回,适合做处理数据后返回一个结果
创建语法: create function 函数名(参数列表) returns 返回类型 begin 函数体 end 参数列表:参数名+类型 函数体:肯定有return 语句
调用语法 select 函数名(参数列表)
查看函数 show create function 函数名;
删除函数 drop function 函数名;
```sql
-------------------------------------------存储过程----------------------------------------------
## 1. 空参列表
## 插入admin五条记录
DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO admin(`username`,`password`)
VALUES('john',1000),('jack',1001),('tom',1003);
END $
CALL myp1()$
## 2. in模式的参数
## 创建存储过程实现根据女生名查询男生信息
SELECT * FROM beauty;
SELECT * FROM boys;
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo.*
FROM boys bo
RIGHT OUTER JOIN beauty b
ON bo.id=b.boyfriend_id
WHERE b.name=beautyName;
END $
CALL myp2('柳岩')$
## 实现用户是否登录成功
CREATE PROCEDURE myp3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
DECLARE result INT DEFAULT 0;
SELECT COUNT(*) INTO result
FROM admin
WHERE admin.username=username AND admin.`password`=PASSWORD;
SELECT IF(result>0,'成功登录','登录失败');
END $
CALL myp3('张飞','888')$
## 3. 创建out模式
## 根据女生名返回男生名和男生魅力值
CREATE PROCEDURE myp4(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT userCP INT)
BEGIN
SELECT bo.boyName,bo.userCP INTO boyName,userCP
FROM boys bo
JOIN beauty b
ON bo.id=b.boyfriend_id
WHERE b.name=beautyName;
END$
CALL myp4('王语嫣',@bname,@userCP)$
SELECT @bname,@userCp$
## 4. 创建inout模式
CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
SET @m=10$
SET @n=20$
CALL myp6(@m,@n)$
SELECT @m,@n;
-------------------------------------------函数----------------------------------------------
CREATE FUNCTION myf1() RETURNS INT
BEGIN
DECLARE C INT DEFAULT 0; #定义局部/用户变量作为返回值
SELECT COUNT(*) INTO C
FROM employees;
RETURN C;#赋值返回值
END $
SELECT myf1()$