使用作为变量的字段声明表变量

时间:2016-05-09 21:33:44

标签: 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       
(
    [TableName] [nvarchar](100), 
    [UniqueName] [nvarchar](100), 
    [FieldName] [nvarchar](100), 
    [TransID_'' + @ID1 + ''] [nvarchar](2000), 
    [TransID_'' + @ID2 + ''] [nvarchar](2000)
)

因为两个TransID字段将具有不同的数字,并且字段名称需要包含这些数字。总共有大约3,000行代码,当我说我需要这样命名时,请相信我。

无论如何......这可以吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

你需要动态的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