
无论如何,当您提前不知道表名时,无论如何我都不知道要摆脱动态SQL。SQL
Server具有一项功能,您可以在
select语句中对返回的每一行进行一次变量分配。这可用于消除游标并将带有所有
delete语句的一个字符串传递给SQL
Server以执行
DECLARE @sqlText nvarchar(MAX) = ''; -- initialize because NULL + 'x' is NULLDECLARE @CheckDate DATETIME = DATEADD(YEAR, -2, GETDATE());SELECT @sqlText = @SqlText + 'DELETE FROM dataTEST.dbo.' + QUOTENAME(name) + ' WHERe LAST_MOD < @CheckDate ; 'FROM dataTEST.sys.tablesWHERe (name like '%[_]h' OR name like '%[_]dh')ORDER BY nameIF @@ROWCOUNT > 0 EXEC sp_executesql @sqlText , N'@CheckDate DATETIME' , @CheckDate
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)