TSQL动态添加存储过程中的列

Gra*_*ins 3 t-sql sql-server stored-procedures

您好我正在编写一个大型存储过程,它创建一个动态报表,大小为n列,前6个是常量,其余依赖于传递给过程的几个参数来创建具有所需列的表.

我遇到的问题是使用以下TSQL

DECLARE @columnname VARCHAR(50)
SET @columnname = 'on_' + @description

IF NOT EXISTS(SELECT * FROM syscolumns WHERE id = OBJECT_ID('reports')
       AND NAME = @columnname)
BEGIN
      ALTER TABLE reports ADD @columnname VARCHAR(50) NULL
END
Run Code Online (Sandbox Code Playgroud)

我在上面代码的ALTER TABLE语句中的@columnname上遇到了语法错误.

此外,由于我是新手,我不确定这是否是执行此操作的最佳方式,或者是否有更好的方法在TSQL中生成所需的动态表.

Sql*_*CID 13

试试这个:

声明@sql nvarchar(100)

set @sql ='ALTER TABLE报告ADD'+ @ columnname +'VARCHAR(50)NULL'

exec sp_executesql @sql