Sql 声明具有变量字段的表变量
我有这个:Sql 声明具有变量字段的表变量,sql,sql-server,Sql,Sql Server,我有这个: declare @t1 table ( [TableName] [nvarchar](100), [UniqueName] [nvarchar](100), [FieldName] [nvarchar](100), [TransID_1] [nvarchar](2000), [TransID_2] [nvarchar](2000) ) 我需要这样的东西: declare @t1 table ( [T
declare @t1 table
(
[TableName] [nvarchar](100),
[UniqueName] [nvarchar](100),
[FieldName] [nvarchar](100),
[TransID_1] [nvarchar](2000),
[TransID_2] [nvarchar](2000)
)
我需要这样的东西:
declare @t1 table
(
[TableName] [nvarchar](100),
[UniqueName] [nvarchar](100),
[FieldName] [nvarchar](100),
[TransID_'' + @ID1 + ''] [nvarchar](2000),
[TransID_'' + @ID2 + ''] [nvarchar](2000)
)
因为两个TransID字段将有不同的数字,字段名需要包含这些数字。总共大约有3000行代码,当我说需要这样命名时,请相信我
无论如何。。。这能做到吗?如果是这样的话,怎么做?您需要动态sql来实现这一点,比如
Declare @ID1 varchar(10) = '20' ,@ID2 varchar(10) = '30'
Declare @Sql Nvarchar(max)
set @Sql = N'declare @t1 table
(
[TableName] [nvarchar](100),
[UniqueName] [nvarchar](100),
[FieldName] [nvarchar](100),
[TransID_' + @ID1 + '] [nvarchar](2000),
[TransID_' + @ID2 + '] [nvarchar](2000)
)
select * from @t1'
Exec sp_executesql @sql
您需要使用动态sql来实现这一点,比如
Declare @ID1 varchar(10) = '20' ,@ID2 varchar(10) = '30'
Declare @Sql Nvarchar(max)
set @Sql = N'declare @t1 table
(
[TableName] [nvarchar](100),
[UniqueName] [nvarchar](100),
[FieldName] [nvarchar](100),
[TransID_' + @ID1 + '] [nvarchar](2000),
[TransID_' + @ID2 + '] [nvarchar](2000)
)
select * from @t1'
Exec sp_executesql @sql
需要注意的是@t1将只在动态SQL部分的作用域中;执行sp后,您将无法引用它_executesql@LordBaconPants我在回答中确实提到了这一点。不管怎样,谢谢你指出了这一点。我不得不稍微调整它以适应,但这把我推向了正确的方向。我发现了范围问题,并将其包含在我的调整中;执行sp后,您将无法引用它_executesql@LordBaconPants我在回答中确实提到了这一点。不管怎样,谢谢你指出了这一点。我不得不稍微调整它以适应,但这把我推向了正确的方向。我发现了范围问题,并将其包含在我的调整中。为什么表中需要动态列名?为什么表中需要动态列名?