存储过程
 存储过程简称过程,procedure,是一种用来处理数据的方式,可以理解为是没有返回值的函数
	
	创建过程
		create procedure 过程名([参数列表])
		begin
			-- 过程体
		end
	
	-- 创建过程
		create procedure pro1() 
		select * from my_student;
	
	查看过程:
	函数的查看方式适用于过程,关键字换成procedure,
	show procedure status[like ‘partten‘];
	-- 查看创建语句
	show create procedure 过程名 ;
	
	调用过程,没有返回值,select是不能访问的
	使用call调用
	call pro1();
	
	修改&删除
	只能先删除后新增
	drop procedure 过程名;
	
	参数:
		函数参数需要数据类型指定,过程比函数更严格,过程有自己的类型限定,三种类型
			in:数据只是从外部传入内部使用(值传递),可以是数据也可以是变量
			out:只允许过程内部使用(不用外部数据),该外部使用的(引用传递,外部的数据会被先清空才会进入内部);只能是变量
			inout:外部的可以再内部使用,而内部修改也可以给外部使用(应用传递),只能是变量
			
			基本使用:
				create procedure 过程名(in 形参名字 数据类型,out 形参名字 数据类型,inout 形参名字 数据类型)
	过程参数:
	delimiter $$
	create procedure pro1(in int_1 int,out int_2 int, inout int_3 int) 
	begin
		-- 查看三个变量
		select int_1,int_2,int_3;-- int_2的值一定会是null
		-- 修改局部变量
		set int_1 = 10;
		set int_2 = 100;
		set int_3 = 1000;
		-- 查看局部变量
		select int_1,int_2,int_3;
		-- 查看全局变量
		select @int_1,@int_2,@int_3;
		-- 修改全部变量
		set @int_1 = ‘a‘;
		set @int_2 = ‘b‘;
		set @int_3 = ‘c‘;
		select @int_1,@int_2,@int_3;
	end
	$$
	delimiter ;
	
	调用:out和inout类型必须是变量,而不是数值
	
	正确调用
		set @int_1=1;
		set @int_2=2;
		set @int_3=3;
		call pro1(@int_1,@int_2,@int_3);
		内部修改会影响外部
		
	存储过程对于变量的操作是滞后的,是在存储过程调用结束的时候,才会重新将内部修改的值赋值给外部传入的变量。
	
	局部变量与全局变量无关,在存储过程调用结束之后,系统会将局部变量重新返回给全局变量(out,inout)
原文:http://www.cnblogs.com/qull/p/6597441.html