zoukankan      html  css  js  c++  java
  • 存储过程三种参数实例和四种循环方式

    存储过程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;

  • 相关阅读:
    Java集合(容器)学习
    Java中最基本的集合接口:初识Collection
    Java中的Overload和Override有什么区别
    Java程序国际化学习代码一
    Java中的io流学习(了解四大基类和基本步骤)
    忘记电脑连过的WiFi的密码了,但又想知道,该怎么办?
    你真的理解了for循环吗?反正我是没有
    Java中的“==操作符”和equals方法有什么区别
    Java中final、finally、finalize有什么区别?
    Thread--线程工作万花筒
  • 原文地址:https://www.cnblogs.com/laosun0204/p/14470227.html
Copyright © 2011-2022 走看看