有没有办法使用动态SQL清除给定表中的所有列,但传入的列除外?
示例 - 我有一个将来会添加列的表,但它总是有一组我不想删除的列。
CREATE procedure [dbo].[sp_clearTable](
@columnExclusionList varchar(500),
@tableName varchar(100)
)
AS
BEGIN
in @tableName, clear all columns except those in @columnExclusionList
go
答案 0 :(得分:1)
是的,有几点需要注意。
那说:
Declare @columns varchar(max);
Set @columns='';
Select @columns = @columns + column_name +','
From information_schema.columns
Where table_name = @tablename;
在T-SQL(SQL Server)中给出逗号分隔值的列表。如何处理排除列表取决于版本和产品。在SQL Server 2008中,您可以使用表值参数,或者可以使用字符串拆分将值放入temptable / variable中。
我不知道你的设计,但我建议仔细考虑它,因为这绝对是不寻常的 - 这可能不是你应该采取的方法来解决你想要解决的任何问题,但它可以做到。