您的位置:首页 > 数据库 > MySQL

关于MySQL存储过程不支持数组的解决办法

2012-04-21 16:09 477 查看
最近要生成些报表,遇到点难题,现在终于解决了,记录下来,方便大家查看,有问题大家一起交流,QQ:75361420
drop procedure if exists getdata;
delimiter $$;
create procedure getdata()
begin
declare hydms varchar(100);
declare i int;
set hydms = '27,35,36,368,39,401'; #在这里定义一个以逗号分割字符串来作为数组
set i=1;
while i <= 6 do #开始循环,这里的6即代表数组的大小
select
B1 as '企业名称',
B2 as '行业类别',
C3 as '企业规模',
F4 as '其中:产成品',
F5 as '流动资产年平均余额(单位:千元)',
F6 as '资产总计(单位:千元)',
F7 as '负债合计(单位:千元)',
F8 as '产品销售收入(主营业务收入,2009)(单位:千元)',
F9 as '产品销售成本(主营业务成本,2009)(单位:千元)',
F10 as '产品销售费用(营业费用,2009)(单位:千元)',
F11 as '产品销售税金及附加(主营业务费用及附加,2009)(单位:千元)',
F12 as '管理费用(单位:千元)',
F13 as '财务费用(单位:千元)',
F14 as '其中:利息支出(单位:千元)',
F15 as '利润总额(单位:千元)',
F16 as '本年应交增值税(单位:千元)',
F17 as '应收账款净额(单位:千元)',
V18  as '全部职工(从业人员平均人数)'
from qy09_11
where left(B2,3) like concat(substring_index(substring_index(hydms, ',' ,i),',',-1),'%')
#上一行是核心代码,通过两次截串获取到数组元素,第一个参数是要截取的字符串#第二个参数是以什么符号来截取
#第三个参数表示从第几个符号(第二个参数)开始截取
#如果是正数表示从左边开始截取,负数表示从右边开始截取
#当i=2时,第一次截取后是27,35,再截取时从右边截取一个,即获取到36,这样就获取到数组的第二个元素,以此类推
#当然这个被截取的字符串你也可以输入参数传进来,我这里就写死了
order by F8 limit 0,50;
set i = i + 1;
end while;
end$$;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: