存储过程:一组预先编译好的sql语句的集合,理解成批处理语句。sql
create procedure 存储过程名(参数列表) begin 存储过程体(一组合法的sql语句) end
注意:数据库
in stuname varchar(20);
delemiter 结束标记
语法:服务器
call 存储过程名(实参列表);
delimiter $ create procedure myok() begin insert into admin(username,password) values ('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000'); end $ call mypl()$
create procedure myp2(in beatuName varchar(20)) begin select bo.* from boys bo right join beauty b on bo.id=b.boyfriend_id where b.name=beautyName; end
案例2:用户是否登陆成功函数
create procedure myp3(in username varhchar(10),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 $
delimiter $ create procedure myp5(in beautyName varchar(20),out boyName varchar(20)) begin select bo.boyName into boyName from boys bo inner join beauty b on bo.id = b.boyfriend_id where b.name=beautyName; end$ set @bNme$ call myp5('小昭',@bName)$ select @bName$
案例2:根据女神名,返回对于的男神名和男神魅力值code
delimiter $ create procedure myp6(in beautyName varchar(20),out boyName varchar(20),out userCP int) begin select bo.boyName ,bo.userCP into boyName,userCP from boys bo inner join beauty b on bo.id=b.boyfriend_id where b.name=beautyName; end $
create procedure myp8(inout a int,inout b int) begin set a=a*2 set b=b*2; end$
语法:drop procedure 存储过程名
it
语法:show create procedure 存储过程名;
io
与存储过程基本相同,区别在于
存储过程:能够有0个返回,也能够有多个返回,适合作批量插入,批量更新
函数:有且仅有一个返回,适合作 处理数据后返回一个结果。编译
create function 函数名(参数列表) returns 返回类型 begin 函数体 end
注意:ast
SELECT 函数名(参数列表)
CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE c INT DEFAULT 0; SELECT COUNT(*) FROM employees; RETURN c; END
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE BEGIN SET @sal=0; SELECT salary INTO @sal FROM employees WHERE last_name = empName; RETURN @sal; END$
案例2:根据部门名,返回该部门的平均工资function
CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE BEGIN DECLARE sal DOUBLE; SELECT AVG(salary) INTO sal FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name=deptName; RETURN sal; END$
语法
show create function 函数名;
drop function 函数名;