日期:2014-05-18  浏览次数:20405 次

关于存储过程的问题,达人请进。。。。
set   @a=1
declare   @sql   nvarchar(50)
set   @sql= 'CREATE   TABLE   #temp4   (corp_name   nvarchar(50)   null,   '
while   @i> 0
    begin
            set   @sql   =@sql+ 'fee '+@a+ '   decimal(13,2)   null,sumfee '+@a+ '   decimal(13,2)   null '
            set   @a=@a+1
            set   @i=@i-1
    end  
set   @sql=@sql+ ') '  


可先假设@i=13  
@a和@i都是int   型的  
错误可能出在set   @sql   =@sql+ 'fee '+@a+ '   decimal(13,2)   null,sumfee '+@a+ '   decimal(13,2)   null '中  
因为@sql是   nvarchar型的   @a是int   型的
我将他们相加   可能就出错了  
各位达人帮忙看看,谢谢了


------解决方案--------------------
declare @a int
declare @i int
set @i=13
set @a=1
declare @sql nvarchar(4000) --定义的长度太小了
set @sql= 'CREATE TABLE #temp4 (corp_name nvarchar(50) null, '
while @i> 0
begin
set @sql=@sql+ 'fee '+rtrim(@a)+ ' decimal(13,2) null,sumfee '+rtrim(@a)+ ' decimal(13,2) null '
set @a=@a+1
set @i=@i-1

end
set @sql=@sql+ ') '

print @sql