我正在编写一个存储过程,旨在针对许多类似的表运行。由于我们每年都归档数据库,因此它不仅需要表名参数,还需要数据库名参数。
问题是,我想检查表是否存在,但我事先不知道数据库名称。通常我可以这样做:
IF EXISTS (
SELECT *
FROM [Database].sys.objects
WHERE object_id = OBJECT_ID(@TableName)
AND type in (N'U'))
但是将 DB 名称作为变量传递给它意味着我很确定 sys.objects 会对我产生影响。
这可能吗?