存儲過程三種參數實例和四種循環方式


存儲過程in參數實例:
delimiter $$;
create procedure test1(id int,phone int)
begin
declare s_name varchar(12);
declare sex varchar(10) default '男';
set id = id+1;
set s_name = '鄧肯';
insert into students values(id,s_name,phone,sex);
end
$$;
delimiter;

set @id=98;
call test1(@id,8232342);
select * from students;
select @id;

存儲過程out參數實例:
delimiter $$;
create procedure test2(id int,out phone int)
begin
declare s_name varchar(12);
declare sex varchar(10) default '男';
set id = id+1;
Select phone;
set phone = 186125312;
set s_name = '鄧肯';
insert into students values(id,s_name,phone,sex);
end
$$;
delimiter;

set @phone=99888;
call test2(68,@phone);
select * from students;
select @phone;

存儲過程inout參數實例:
delimiter $$;
create procedure test3(id int,out phone int,inout s_name varchar(20))
begin
declare sex varchar(10) default '男';
set id = id+1;
set phone = 186125312;
select s_name;
set s_name = 'DBA';
insert into students values(id,s_name,phone,sex);
end
$$;
delimiter;

set @phone=99888;
set @s_name='dba'
call test3(70,@phone,@s_name);
select * from students;
select @s_name;

 

存儲過程中的if條件判斷語句格式:
if 條件 then
語句
elseif 條件 then
語句
else
語句
end if;

 

存儲過程if判斷實例:
現在有一個besttest表,里面有班級和學生id,來寫一存儲過程實現插入小於100的學號班級是以前班,大於等於100的是喬巴,大於等於200的是索隆班
create table besttest(s_no int,class varchar(20)); # 創建表
delimiter $$;
create procedure test4(s_no int)
begin
declare class_name varchar(10);
if s_no < 100 then
set class_name='以前班';
elseif s_no>=100 and s_no<200 then
set class_name='喬巴班';
else
set class_name='索隆班';
end if;
insert into besttest values(s_no,class_name);
end
$$;
delimiter;
call test4(100);

 

存儲過程中的case條件判斷語句格式:
case value
when 條件 then
sql語句
when 條件2 then
sql語句
else#如果上面條件都不滿足的話執行
sql語句
end case

 

存儲過程case判斷實例:
現在有一個orders表,里面有id和訂單狀態,0代表未支付,1代表已支付,2代表已發貨,3代表已收貨,4代表已完成,其他值代表未知狀態
create table orders(id int, status varchar(20));
delimiter $$;
create procedure test5(order_id int)
begin
declare status varchar(20);
case oder_id
when 0 then
set status='未支付';
when 1 then
set status='已付款';
when 2 then
set status='已發貨';
when 3 then
set status='已收貨';
when 4 then
set status='已完成';
else
set status='未知';
end case;
insert into orders values(order_id,status);
end
$$;
delimiter;
call test5(1, '已付款');

 

存儲過程中的while循環(經常使用while來造數據):
while 條件 do
sql語句
end while

while循環實例:
delimiter $$;
create procedure test6(count int)
begin
declare name varchar(20);
declare sex varchar(10);
declare phone int(20);
declare i int;
set i = 0;
set sex='男';
while i<count do
set name=concat('帕克',i);
set phone=18612545 + i;
insert into students(name,phone,sex) values(name,phone,sex);
set i=i+1;
end while;
end
$$;
delimiter;

call test6(500);
select count(*) from students;

 

存儲過程中的repeat循環:
repeat和while一樣,也是一種循環的語句,和while不一樣的是,repeat循環至少會執行一次,repeat語句格式:
repeat
sql語句
until 條件
end repeat;

 

repeat循環實例:
delimiter $$;
create procedure test7(count int)
begin
declare name varchar(20);
declare sex varchar(10);
declare phone int(20);
declare i int;
set i = 0;
set sex='男';
repeat
set name=concat('big',i);
set phone=18612545 + i;
insert into students(name,phone,sex) values(name,phone,sex);
set i=i+1;
until i>count
end repeat;
end
$$;
delimiter;

call test7(500);
select count(*) from students;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM