存储过程和函数的区别:
存储过程可以没有返回值,函数必须有返回值;
// 语法
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体;
END
参数模式 IN , OUT , INOUT
举例:IN name VARCHAR(20)
调用:CALL 存储过程名
1、 IN 参数
DELIMITER $ // 定义结束符号
CREATE PROCEDURE test01(IN name VARCHAR(20))
BEGIN
DECLARE result INT DEFAULT 0; # 声明并初始化
select count(*) into result # 赋值
from stu s where s.name = name ;
select result;
END $
调用:
CALL test01('小明') $
2、 OUT 参数
CREATE PROCEDURE test02(IN name VARCHAR(20), OUT bname VARCHAR(20) )
BEGIN
select s.bname into bname
from stu s where s.name = name ;
END $
调用:
CALL test02('小白',@bname)$
select @bame$
3、 INOUT 参数
CREATE PROCEDURE test03(INOUT a INT,INOUT b INT)
BEGIN
SET a = a + 10 ;
SET b = b + 10 ;
END $
调用:
set @a=10$
set @b=20$
call test03(@a,@b)$
select @a,@b$
4、删除存储过程
DROP PROCEDURE 存错过程名;
5、查看存储过程信息
SHOW CREATE PROCEDURE 存错过程名;
函数语法
CREATE FUNCTION 函数名(参数列表)RETURNS 返回类型
BEGIN
函数体
END
调用
select 函数名(参数列表)
1、有参数返回
CREATE FUNCTUIN test01 (name VARCHAR(20) ) RETURNS DOUBLE
BEGIN
SET @sal = 0;
SELECT id INTO @sal
FROM stu
WHERE last_name = name ;
RETURN @sal;
END
select test01('xiaoming') $
查看函数
SHOW CREATE FUNCTION 函数名;
删除函数
DROP FUNCTION 函数名;
循环语句
if 函数
1、语法:if(表达式1,表达式2,表达式3)
如果表达式1成立,则返回表达式2的值,否则返回表达式3的值;
2、语法:
IF 条件1 THEN 语句1或返回值;
ELSEIF 条件2 THEN 语句2;
......
END IF;
case 结构
1、等值判断
CASE 变量|表达式|字段
WHEN 要判断的值 THEN 返回值1;
WHEN 要判断的值 THEN 返回值2;
.......
ELSE 要返回的值;
END CASE;
2、 区间判断
CASE
WHEN 要判断的条件1 THEN 返回值1;
WHEN 要判断的条件2 THEN 返回值2;
.......
ELSE 要返回的值;
END CASE;
循环结构
1、while循环
WHILE 条件 DO 循环体
END WHILE;
举例:
CREATE PROCEDURE test01 (IN count INT )
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<count DO
INSERT INTO admin(name,pwd) VALUES ('ROSE'+i,'123456');
SET i = i + 1;
END WHILE;
END
PS:LEAVE 结束循环
ITERATE 结束本次循环