我的主数据库中有一个存储过程。它由提供所有参数的外部程序使用。提供的参数之一是数据库名称。在该数据库中应该有一个名为xyz
.
当请求的数据库中不存在该表时,我收到异常。我想在存储过程中写一些东西来检查该表是否存在,如果它不存在则返回更有用的东西。
这比看起来更棘手。我可以使用动态 SQL 通过变量数据库名称来获取。我可以使用IF EXISTS(SELECT * FROM SYS.DATABASES WHERE NAME = PARAMETER1)
.
为了检查表是否存在,我需要USE
数据库,所以我需要使用动态 SQL。但是,这会给我留下一个可执行变量,我不知道如何检查该变量的结果(例如,我做不到IF EXISTS (EXEC @SQL)
)。我希望有某种方式可以说SELECT * FROM sys.AllDatabasesAllTables WHERE DatabaseName = Parm1 AND TableName = Parm2
。
我意识到这sys.AllDatabasesAllTables
不存在,但我希望也许有人知道另一种方式......有没有一种好方法可以在master
存储所有数据库及其表名的数据库中创建视图?