Let's go

mysql存储过程

1.创建查询图书编号丶书名丶图书类别的存储过程

--创建查询图书编号丶书名丶图书类别的存储过程
create procedure  proc1()
begin
select book_id,book_name,category from bookinfo t1
join bookcategory t2
on t1.book_category_id=t2.category_id;
end

call proc1();

2.设计一个存储过程,删除一个读者,并输出剩余读者的个数

--设计一个存储过程,删除一个读者,并输出剩余读者的个数
create procedure proc_2(in cid char(18),out num int)
begin
delete from readerinfo where card_id=cid;
select count(card_id) into num from readerinfo;
end


select * from readerinfo;
call proc2('20000000',@num);
select @num;

3.设计一个存储过程,实现交换两个数的处理

--设计一个存储过程,实现交换两个数的处理
create procedure proc3(inout num1 int,inout num2 int)
begin
declare t int default 0;--设置t变量,赋予初始值0
set t=num1;
set num1=num2;
set num2=t;
end

set @n1=3;@n2=5;
call proc3(@n1,@n2)
select @n1,@n2;

4.设计比较两个数的大小的存储过程

--设计比较两个数的大小的存储过程
delimiter //
create procedure proc4(in num1 int,in num2 int,out result varchar(30))
BEGIN
if num1=num2 then
    set result='num1等于num2';
elseif num1>num2 then
    set result='num1大于num2';
else
    set result='num1小于num2';
end if;
end//
delimiter;

call(5,10,@result);
select @result

5.例4使用case语句

--设计比较两个数的大小的存储过程
delimiter //
create procedure proc4(in num1 int,in num2 int,out result varchar(30))
begin
case
when num1=num2 then set result='num1等于num2';
when num1>num2 then set result='num1大于num2';
else set result='num1小于num2';
end case;
end//
delimiter;

call(5,10,@result);
select @result

6.设计一个存储过程,向数据表插入100条数据的存储过程

SELECT floor(rand()*5);--随机数

create procedure proc6()
begin 
declare n int default 7;
while n<107 do
    insert into bookcategory values(n,concat('图书类型',n),floor(rand()*n));
    set n=n+1;
end while;
end

call proc6();

 7.实例【IF ELSEIF】使用

--设计一个存储过程,实现【IF ELSEIF语句】
create procedure procName(IN _AreaNo VARCHAR ( 20 ), IN _Sex VARCHAR ( 20 ))
begin

IF(_Sex = '') THEN

ELSEIF(_Sex='')THEN

ELSE
END IF; end
posted @ 2018-12-02 22:09  chenze  阅读(508)  评论(0编辑  收藏  举报
有事您Q我