实例一,空参保存 :
#创建存储过程
CREATE PROCEDURE adAdmin()
#开始
BEGIN
#操作SQL
INSERT INTO admin(user_name,`status`)VALUES('测试1','100'),('测试2','200'),('测试3','300');
#结束
END
#调用存储过程
CALL adAdmin()
实例二,带参 :
#带入的参数前面in不建议省略,后面跟参数名加类型
CREATE PROCEDURE adAdmin(in userName VARCHAR(20))
BEGIN
SELECT * from admin WHERE user_name=userName;
END
CALL adAdmin('李四')
带返回值的存储过程(需要创建调用以及查询一起执行) :
#创建存储过程, OUT 表示返回的结果集
CREATE PROCEDURE admin4(in userName VARCHAR(20),OUT boy VARCHAR(20))
BEGIN
# 将status的值通过 INTO 赋值给返回结果集 boy
SELECT admin.status INTO boy from admin WHERE user_name=userName;
END
//执行存储过程,返回结果集参数 @加名字
CALL admin4('李四',@bName)
//直接执行结果集定义的参数
SELECT @bName
case结构 :
CREATE PROCEDURE test_name(in nui INT)
BEGIN
#开始语句
CASE
WHEN nui >= 90 THEN SELECT '结果A';
WHEN nui >= 80 THEN SELECT '结果B';
WHEN nui >= 60 THEN SELECT '结果C';
ELSE SELECT '结果D';
#结束语句
END CASE;
END
CALL test_name(40)
IF ELSE结构 :
CREATE PROCEDURE test_if1(nui INT)
BEGIN
IF nui >= 90 THEN SELECT '结果A';
ELSEIF nui >= 80 THEN SELECT '结果B';
ELSEIF nui >= 60 THEN SELECT '结果C';
ELSE SELECT '结果D';
END IF;
END
CALL test_if1(60)
循环 :
iterate 类似于 continue,结束本次循环,继续下一次。
leave 类似于 break,结束当前所在的循环。
# WHILE 循环
CREATE PROCEDURE test_while(in nui INT)
BEGIN
DECLARE i INT DEFAULT 1;
#这里注意一下 WHILE 这个关键函数
WHILE i<= nui DO
INSERT INTO admin(user_name,`status`) VALUES("测试",i);
SET i=i+1;
END WHILE;
END
删除存储过程 :DROP PROCEDURE 存储过程的名字