想循环遍历sql DB&中的所有表。对包含不同表

时间:2016-06-13 10:35:35

标签: sql sql-server-2008

我遇到了一个问题,我需要遍历数据库中的所有表并在记录上执行一些与当前日期时间匹配的查询(日期时间先前存储在表中作为enddate)。

所以我的数据库中有多个表,哪些表的名称为'%_PHGH_LINK_DETAILS',每个表的起始位置为username
 例如:如果用户名为john,则表名为john_PHGH_LINK_DETAILS。

我想循环遍历所有这些表格&获取与enddatecurrent date匹配的记录。与enddatecurrent datetime匹配的记录将会更新&相同的记录被插入另一个xyz表中。我想把这个querfory放在事件中,所以它会在特定时间间隔之后继续检查所有表,如果某些记录达到了结束时间。有人请指导我。

1 个答案:

答案 0 :(得分:0)

你没有提供足够的细节给我一个完整的答案。一种方法是做这样的事情:

EXEC sp_MSforeachtable
'
DECLARE @DateTimeToSearch datetime = GETDATE()

IF ''?'' LIKE ''%_PHGH_LINK_DETAILS%''
BEGIN
    SELECT * FROM ? WHERE enddate = @DateTimeToSearch
END
'

sp_MSforeachtable遍历数据库中的所有表。表的名称由占位符?替换。