CREATE PROCEDURE mypro(in a int,in b int,out sum int)
BEGIN
set sum = a+b;
END;
-- procedure存储过程
-- mupro过程名称 begin end相当于Java里面的 {}
-- 如何调用这个存储过程
call mypro(3,6,@s);-- call调用
select @s;
-- 乘积
CREATE PROCEDURE my(in a int,in b int,in c int,out ji int)
BEGIN
set ji = a*b*c;
end;
call my(3,6,4,@s);-- call调用
select @s;
-- 变量
CREATE PROCEDURE myprol()-- 定义过程
BEGIN
DECLARE name VARCHAR(20);-- 定义一个变量
set name = '张三';-- 变量赋值
SELECT * from stuinfo WHERE stuName = NAME;
END;
call myprol();-- 调用过程
-- 流程控制语句
create procedure mypro2(in num int)
begin
if num<0 then -- 条件开始
select '负数';
elseif num=0 THEN
select '不是正数也不是负数';
else
select '正数';
end if;-- 条件结束
end;
-- 调用过程
call mypro2(0);
-- 输入两个数比大小,输出大的数;
create procedure mypro3(in a int,in b int,out c int)
begin
if a>b then
set c=a;
else
set c=b;
end if;
end;
call mypro3(5,6,@c);
SELECT @c;
-- where循环输出1到10的累加和
CREATE PROCEDURE mypro5(out sum int)
BEGIN
DECLARE num int DEFAULT 0;
set sum = 0;
WHILE num<10 do-- 循环开始
set num = num+1;
set sum = sum+num;
end while;-- 循环结束
end;
call mupro5(@sum);-- 调用过程
select @sum; -- 查询变量值
-- 1到100被5整除的数字之和
CREATE PROCEDURE mypro6()
BEGIN
DECLARE num int default 0;
DECLARE i int;
set i=0;
WHILE i<100 DO
set i=i+1;
if mod(i,5)=0 THEN
set num=num+i;
end if;
END WHILE;
SELECT num;
END;
call mypro6();-- 调用过程
select mypro6; -- 查询变量值
-- 1到100被5整除的数字之和
create procedure mypro66()
begin
DECLARE num int default 0;
DECLARE i int;
set i=0;
WHILE i<100 DO
set i=i+1;
if i%5=0 THEN
set num=num+i;
end if;
END WHILE;
SELECT num;
END
call mypro66();-- 调用过程
select mypro66; -- 查询变量值
-- 显示存储过程
SHOW PROCEDURE STATUS;
-- 显示特定数据库的存储过程
SHOW PROCEDURE status where db = 'test1';
-- 显示特定模式的存储过程,要求显示名称中包含“%特定字符%”的存储过程
SHOW PROCEDURE status where name like '%my%';
-- 显示存储过程“mypro1”的源码
SHOW CREATE PROCEDURE mypro;
-- 删除存储过程
drop PROCEDURE my;
sql存储基本语句与案例
最新推荐文章于 2024-06-04 09:54:09 发布