SQL 服务器:删除列 @variable 不工作
SQL Server : drop column @variable not working
我正在使用 Microsoft SQL 服务器,我似乎无法解决这个问题。
我有一个 table,上面会有一些动态和静态列。
静态列是产品名称、产品类型,动态数据是连续几个月的一些生产数据。
在每月的每个月初,我都必须从上个月的动态列中删除并在 table
的末尾添加一个新的月份
我的解决方案是将列名保存到局部变量中,然后将其添加到 alter 语句中。但这不起作用,它一直给我一个错误,如下所示:
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near '@month_b'
我现在将添加查询
declare @month_t char(15)
declare @month_b char(15)
declare @sql char(30)
set @month_b = (SELECT top 1 name
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.ct_test')
AND name != 'TTNR' AND name != 'Family' AND name like '%B%'
ORDER BY name ASC)
set @month_t = (SELECT top 1 name
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.ct_test')
AND name != 'TTNR' AND name != 'Family' AND name like '%T%'
ORDER BY name ASC)
alter table ct_test
drop column @month_b
我找不到解决办法,你能帮帮我吗?
提前致谢
您需要使用Dynamic Query
Declare @sql nvarchar(max)
set @sql = 'alter table ct_test drop column '+ @month_b
Exec sp_executesql @sql
set @sql = 'alter table ct_test drop column '+ @month_t
Exec sp_executesql @sql
我正在使用 Microsoft SQL 服务器,我似乎无法解决这个问题。
我有一个 table,上面会有一些动态和静态列。
静态列是产品名称、产品类型,动态数据是连续几个月的一些生产数据。
在每月的每个月初,我都必须从上个月的动态列中删除并在 table
的末尾添加一个新的月份我的解决方案是将列名保存到局部变量中,然后将其添加到 alter 语句中。但这不起作用,它一直给我一个错误,如下所示:
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near '@month_b'
我现在将添加查询
declare @month_t char(15)
declare @month_b char(15)
declare @sql char(30)
set @month_b = (SELECT top 1 name
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.ct_test')
AND name != 'TTNR' AND name != 'Family' AND name like '%B%'
ORDER BY name ASC)
set @month_t = (SELECT top 1 name
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.ct_test')
AND name != 'TTNR' AND name != 'Family' AND name like '%T%'
ORDER BY name ASC)
alter table ct_test
drop column @month_b
我找不到解决办法,你能帮帮我吗?
提前致谢
您需要使用Dynamic Query
Declare @sql nvarchar(max)
set @sql = 'alter table ct_test drop column '+ @month_b
Exec sp_executesql @sql
set @sql = 'alter table ct_test drop column '+ @month_t
Exec sp_executesql @sql