介绍 :

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

介绍 :

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

打开网易新闻 查看精彩图片