关于存储过程基本用法的总结,这位老兄总结的很不错---原文链接。本篇文章主要是对一次存储过程使用的总结。
use database_name;
drop procedure if exists ccgc_name;
drop table if exists `table`;
delimiter //
create procedure ccgc_name()
begin
####################变量定义####################
#存储过程变量(只能在该存储过程中使用)
declare a int default 1;
#会话变量(本次mysql连接会话有效)
set @i = 1;
#全局变量
set GLOBAL 变量名 或者 set @@global.变量名
#区别:在调用存储过程时,以declare声明的变量都会被初始化为NULL。而会话变量(即@开头的变量)
#则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当
#于在是这个会话内的全局变量。全局变量对于所有客户端都可见(定义需要一定的权限)。
####################变量定义####################
####################循环语句####################
#while 条件 ...do ...end while;
while var<6 do
some sql;
end while;
#repeat...until 条件...end repeat;
repeat
some sql;
until x>=5
end repeat;
#tag:loop...end loop;
lp_tag : loop
some sql
end loop;
####################循环语句####################
####################条件判断语句####################
#if...elseif...else...end if;
if(条件) then
some sql;
#elseif() then
#some sql;
else
some sql;
end if;
#case var...when then (else)...end case
case var
when 0 then
sql;
when 1 then
sql;
else
sql;
end case;
####################条件判断语句####################
####################预处理sql语句####################
prepare pstmt from @sql; #必须使用会话变量:@name
execute pstmt; #执行预处理语句
deallocate prepare pstmt; #或者drop prepare pstmt;释放资源
####################预处理sql语句####################
#字符串拼接,也可用于将数字转字符
set @var = concat('',@str2); #concat('',@inta);
#去除左/右/前后的某个字符
set var = trim(leading/trailing/both 'x' from @str1);
#sql select执行的结果导出为文件。into outfile url中的url可以通过
#show variable like %secure% 的值secure-file-priv 得到,也可在my.ini文件修改该参数的值
select * from table into outfile '/home/xxx.xls';
end
//
delimiter ;
#调用存储过程
call ccgc_name();