对没有动态SQL的多个表运行相同的查询

对没有动态SQL的多个表运行相同的查询,第1张

对没有动态SQL的多个表运行相同的查询

无论如何,当您提前不知道表名时,无论如何我都不知道要摆脱动态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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5675639.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存