介绍 :
    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
    语法 :
    因为mysql的默认语句结束符是分号;为了避免与存储过程中sql语句结束符冲突所以要先定义分隔符,我们这里定义//为分隔符,我们使用DELIMITER //这样的语法,就可以定义结束符了,当然你可以自己定义其他喜欢的符号。
    创建存储过程
    delimiter
    create procedure 存储过程名(输入输出类型 参数名1 参数类型,输入输出类型 参数名2 参数类型,…)
    begin
    sql语句 (存储过程要完成的操作)
    end

    实例:
    不带参数 :
    delimiter
    create PROCEDURE test ()
    BEGIN
    select from xsb where sex=’男’;
    END


    带in参数 :
    delimiter
    create PROCEDURE test2 (in a VARCHAR(20))
    begin
    select
    from xsb where sex=a;
    end

    call test2(‘女’);

    带out参数 :
    delimiter
    create PROCEDURE test3 (OUT a varchar(20))
    begin
    select xm into a from xsb where xh=9512101;
    end

    delimiter ;
    call test3(@a); — 调用过程传入实参
    select @a; — 输出实参

    带inout参数 :
    delimiter
    create PROCEDURE test4 (INOUT a varchar(20))
    begin
    select xm into a from xsb where sex=a order by age desc limit 1;
    end

    delimiter ;
    set @a=’男’; — 设置变量a 值为男
    call test4(@a); — 执行过程,传入实参
    select @a; — 结果返回到参数a上,输出a

    总结in、out、inout区别:
    in : 表示输入一个值,你需要一个值,我给你一个值
    out : 你往外输出一个值,你输出的那个值我就拿一个变量来接收你给我输出的那个值
    inout : 既能输入一个值又能传出来一个值

    过程中的循环 :
    delimiter
    create PROCEDURE auto_insert ()
    BEGIN
    declare i int default 1;— 存储过程中定义的临时变量
    while(i<=3000000)do — 循环
    insert into s1 values(i,concat(‘卓象’,i,’期’),’PHP’,concat(‘zx’,i,’@zx.com’));
    set i=i+1;
    end while;
    END