问题描述
我是动态SQL编程的新手。有一组具有不同模式(行和值)的表,它们的记录计数是通过循环动态获取的。但是,软删除的记录不应成为记录计数的一部分。每个表都有一个列,表示在Table_Name_IS_DELETED中的软删除,例如TB1_IS_DELETED。请帮助我动态更新where条件中的列名。
我为计数而编写的代码
SET @Query = 'SELECT @K = COUNT(*) FROM ['+@DB_Source+'].['+@Table_Schema+'].['+@Table_Name+'] x WITH (NOLOCK)
EXEC sp_executesql @Query,N'@K INT OUTPUT',@K=@K OUTPUT;
现在动态查询中应该有一个 WHERE 条件,该条件应该类似于“ TB1_IS_DELETED = 1”,并且表名(TB1)应该相应地更新。
感谢您的帮助。 :)
解决方法
赞:
SET @Query = '
SELECT @K = COUNT(*)
FROM '+quotename(@DB_Source)+'.'+quotename(@Table_Schema)+'.'+quotename(@Table_Name)+' x WITH (NOLOCK)
where '+quotename(@Column_Name)+'=1
'
EXEC sp_executesql @Query,N'@K INT OUTPUT',@K=@K OUTPUT;