我正在尝试向WHERE
语句添加SELECT
子句,以检查表中是否有数据或者是否为0行表。
基本上,我试图让它工作,但显然tables.NAME
不是有效的对象。
SELECT NAME
FROM sys.tables
WHERE (SELECT Count(*)
FROM tables.NAME) <> 0
我不想创建一个临时表,声明一个游标并逐行检查一个值,但是我很难想到如何做到这一点。
答案 0 :(得分:0)
使用游标是解决此问题的合适方法。您无法动态地将一个表中的列解释为表名,同时从该表中进行选择以查看它是否为空,就像您尝试做的那样。实际上,您甚至无法在不使用动态SQL的情况下从动态表中进行选择。请参阅FROM的文档。您可以迭代每个表并检查每个表,也可以query system tables保存存储统计信息以查看表是否为空。