如何实现:
set @c1=@b2--不知道这一句怎么写
=====
declare @sql nvarchar(400),@b varchar(20)
set @b='@a'+'2'
set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@c1 int
select @a1=100,@a2=200,@a3=300 '
set @sql=@sql+N'select @c1='+@b
set @sql=@sql+N' select @c1 as ''c1'''
exec(@sql)
如何实现:
set @c1=@b2--不知道这一句怎么写
=====
declare @sql nvarchar(400),@b varchar(20)
set @b='@a'+'2'
set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@c1 int
select @a1=100,@a2=200,@a3=300 '
set @sql=@sql+N'select @c1='+@b
set @sql=@sql+N' select @c1 as ''c1'''
exec(@sql)
谢谢:paoluo(一天到晚游泳的鱼)
意思很对。
问题Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
当变量@a比较多时,例如:@a1...@an
应该如何处理呢?
谢谢!
=======用我的方法就可以了,我这里只举了三个,其实无数个都可以的。
declare @sql nvarchar(400),@b varchar(20)
set @b='@a'+'2'
set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10)
select @a1=100,@a2=200,@a3=300 '
set @sql=@sql+N'select '+@b
exec(@sql)
declare @a1 int,@a2 int,@a3 int,@b1 int,@b2 varchar(10),@c1 varchar(10)
select @a1=123, @a2=456, @a3=789
Set @b1=2
Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
Select @c1
declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@sql nvarchar(400),@par nvarchar(400)
select @a1=100,@a2=200,@a3=300
set @b='@a'+'2'
set @par=@b+' int'
set @sql=N'select '+cast(@b as nvarchar)
exec sp_executesql @sql,@par,@a2
create table tb(年份 int,[1月] int,[2月] int,[3月] int)
insert into tb select 2006,100,500,800
go
declare @month nvarchar(20)
set @month=N'2'
declare @year int
set @year=2006
declare @t int
declare @sql nvarchar(4000)
set @sql=N'select @t=['+cast(@month as nvarchar)+'月] from tb where 年份='+cast(@year as nvarchar)
exec sp_executesql @sql,N'@t int output',@t output
select @t