1.创建存储过程语法
CREATE PROCEDURE 存储过程名 [(参数)] begin --语句块 end;
2.创建无参存储过程
CREATE PROCEDURE db_pro() begin SELECT * from person; end;
--执行存储过程:
CALL db_pro();
3.创建输入参数存储过程:
CREATE PROCEDURE db_pro(IN p INT) begin SELECT * from person WHERE id = p; end; SET @p=1;
--执行存储过程 CALL db_pro(@p);
4.创建输出参数的存储过程
CREATE PROCEDURE db_pro(OUT out_p INT) begin SELECT COUNT(*) INTO out_p from person; SELECT out_p; --如果不写在执行该存储过程讲无法显示输出结果 end; CALL db_pro(@out_p); --SELECT @out_p; --也可以
5.创建inout输入参数的存储过程
CREATE PROCEDURE db_pro(INOUT inout_p INT) begin SELECT COUNT(*) INTO inout_p from person WHERE id = inout_p; SELECT inout_p; --若不写将无法显示输出结果 end; SET @p=1;
CALL db_pro(@p);
6.删除存储过程
DROP PROCEDURE if exists 存储过程名;
7.修改存储过程
ALTER PROCEDURE 存储过程名
8.条件语句
CREATE PROCEDURE proc2(IN parameter int) begin declare var int; set var=parameter+1; if var=0 then insert into t values(17); end if; if parameter=0 then update t set s1=s1+1; else update t set s1=s1+2; end if; end;
------------------------------------------
DELIMITER // CREATE PROCEDURE proc3 (in parameter int) begin declare var int; set var=parameter+1; case var when 0 then insert into t values(17); when 1 then insert into t values(18); else insert into t values(19); end case; end; // DELIMITER ;
9.循环语句
DELIMITER // CREATE PROCEDURE proc4() begin declare var int; set var=0; while var<6 do insert into t values(var); set var=var+1; end while; end; // DELIMITER ;
-- 它在执行操作后检查结果,而while则是执行前进行检查。 DELIMITER // CREATE PROCEDURE proc5 () begin declare v int; set v=0; repeat insert into t values(v); set v=v+1; until v>=5 end repeat; end; // DELIMITER ;
-- loop循环不需要初始条件,这点和while 循环相似,同时和repeat循环一样不需要结束条件, leave语句的意义是离开循环。 DELIMITER // CREATE PROCEDURE proc6 () begin declare v int; set v=0; LOOP_LABLE:loop insert into t values(v); set v=v+1; if v >=5 then leave LOOP_LABLE; end if; end loop; end; // DELIMITER ;