MySQL的存储过程:
mysql存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
要注意的地方:
1.不能在一个存储过程里定义另一个存储过程,但可以调用另一个存储过程
2. 在命令提示符里,需要修改分隔符,改为其它如:/ 然后可以写多个sql 语句,语句之间通过(;)进行分割
语法:
1 一般格式
create procedure p1() //p1:过程名字;():必须有
begin
insert into user(account,pwd) values('aa','aa');
select * from user;
end
2 带参
create procedure p2(x int)
BEGIN
declare y int;-- 定义整形变量y
set y=x+1; -- 赋值
select y; -- 查询并输出y
end
3-- 输出参数
create PROCEDURE p3(in x int,out y int)
BEGIN
set y=x+1;
end
4-- 判断
CREATE PROCEDURE p4( x int)
BEGIN
if x>5 THEN
select '大于5';
elseif x>100 THEN
select '大于100';
else
select '小于5';
end if;
end
5 --多路选择
create PROCEDURE p6(x int)
BEGIN
CASE
when x=5 THEN
select '==5';
when x>5 THEN
select '>5';
ELSE
select '<5';
end case;
end
6 --循环
create PROCEDURE p5()
BEGIN
DECLARE x int;
set x=0;
while x<5 do
select x;
set x=x+1;
end while;
END7 --游标
医疗阶段报销
报销起伏线1:
start_line 300
阶段报销比例表2:
low2 high2 percent 301 1000 0.5 1001 5000 0.6 5001 10000 0.7 10001 100000 0.9
create procedure p9(x float)BEGINdeclare start2 int DEFAULT 0;DECLARE low2 int ; -- 低DECLARE high2 int ; -- 高DECLARE percent2 float ; -- 比例declare total float ;-- 报销所得DECLARE temp int DEFAULT 0;declare last int DEFAULT 0;-- 定义游标cdeclare c CURSOR for select * from segment;-- 游标结束的标志DECLARE CONTINUE HANDLER for not found set last=-1;-- 读出起付线select start_line into start2 from startn;set temp=x;-- 打开游标open c;-- 读取第一条数据FETCH c into low2,high2,percent2;WHILE last!=-1 doif x>low2 and x<high2 THENset total=total+(temp-300)*percent2;end if;if x>high2 THENset total=(high2-low2)*percent2;set temp=x-(high2-low2);end if;FETCH c into low2,high2,percent2;end while;-- 关闭游标close c;select total;end
mysql workbench 存储过程
最新推荐文章于 2023-06-02 21:47:59 发布