急,急,急!求教这句SQL语句怎么写?
这是邹建兄给的一个解决变量超过8000的一个存储过程
CREATE PROCEDURE t1
AS
--查询处理
declare @sqlhead varchar(8000),@sqlend varchar(8000)
,@sql1 varchar(8000),@sql2 varchar(8000),@sql3 varchar(8000),@sql4 varchar(8000)
,@i int,@ic varchar(20),@sql nvarchar(4000),@ss varchar(8000),@table varchar(400),@Sheet varchar(400)
--生成数据处理临时表
set @table='#t'
set @sql='select id=identity(int,0,1),gid=0,a='',sum(case 省 when ''''''+省+'''''' then 数量 else 0 end) [数量(''+省+'')],sum(case 省 when ''''''+省+'''''' then 金额 else 0 end) [金额(''+省+'')]'' into ##t from(select distinct 省 from Gs_GRSWL)a'
exec(@sql)
--判断需要多少个变量来处理
select @i=max(len(a)) from ##t
set @i=3800/@i
--分组临时表
update ##t set gid=id/@i
select @i=max(gid) from ##t
--生成数据处理语句
select @sqlhead='''select 项目 '''
,@sqlend=''' from Gs_GRSWL group by 项目'''
,@sql1='',@sql2='select ',@sql3='',@sql4=''
while @i>=0
select @ic=cast(@i as varchar),@i=@i-1
,@sql1='@'+@ic+' varchar(8000),'+@sql1
,@sql2=@sql2+'@'+@ic+'='''','
,@sql3='select @'+@ic+'=@'+@ic+'+a from ##t where gid='+@ic
+char(13)+@sql3
,@sql4=@sql4+'+@'+@ic
select @sql1='declare '+left(@sql1,len(@sql1)-1)+char(13)
,@sql2=left(@sql2,len(@sql2)-1)+char(13)
,@sql3=left(@sql3,len(@sql3)-1)
,@sql4=substring(@sql4,2,8000)
--执行
exec( @sql1+@sql2+@sql3+'
exec('+@sqlhead+'+'+@sql4+'+'+@sqlend+')'
)
drop table ##t
GO
下面这一句也是调用邹建兄的一个把数据导出到EXCEL表中的存储过程
exec p_exporttb @sqlstr=@s,@path='c:\',@fname='aa.xls',@sheetname=@n --转EXCEL
我现在的问题是要把导出EXCEL这句SQL 代入到
exec( @sql1+@sql2+@sql3+'
exec('+@sqlhead+'+'+@sql4+'+'+@sqlend+')'
) 中,并把'+@sqlhead+'+'+@sql4+'+'+@sqlend+' 代入到@sqlstr=@s 中的@s 位置上
我试了多次,但不行。请各位高手指点一下。