在“如果存在”语句中将数据库名称作为变量传递



>我有一个查询如下

IF EXISTS( SELECT * from @dbname.dbo.tbl1)
   BEGIN
   ...
   END
ELSE
   BEGIN
   ...
   END

此外,if和else的开始和结束部分中的代码足够大,可以用作动态查询的字符串。我怎样才能做到这一点?

USE MASTER
DECLARE @dbname sysname
SET @dbname = 'MyDB'
IF EXISTS (SELECT NULL FROM sysdatabases WHERE name = @dbname)
BEGIN
-- Action if true
END
ELSE
BEGIN
-- Action if False
END

如果您想检查特定表,如您的问题中所述,您可以修改为

IF EXISTS (SELECT NULL FROM sysobjects WHERE name = @dbname AND type = 'U')

最新更新