如果,那么else语句用于测试数据库名称

时间:2013-06-17 01:50:09

标签: database if-statement

我们为不同的公司运行多个数据库,并且正在尝试建立一个模板数据库,我们知道我们的标准sql脚本可以工作。

因此我编写了需要在多个数据库上运行的SQL脚本,但是在运行脚本之前我需要一些代码来检查数据库名称,如果它是“xyz.db”那么它将跳过部分码。 (if-else声明)。

我作为测试尝试了这个 -

SELECT db_name()

If DB_NAME = 'callQATemplateDB'
  print db_name
else
  print 'not db'

但是我收到以下错误消息 - 在此上下文中不允许使用名称“db_name”。有效表达式是常量,常量表达式和(在某些上下文中)变量。不允许使用列名。

任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:3)

DB_ID()也可以,你不是在比较字符串,所以你不必考虑DB排序规则:

IF DB_ID() = DB_ID('some_db') 
  SELECT 'GOOD DB' AS Msg
ELSE
  SELECT 'BAD DB !' AS Msg

答案 1 :(得分:2)

您是否尝试将“()”放在DB_NAME的末尾?

SELECT DB_NAME();

If DB_NAME() = 'callQATemplateDB'
  print DB_NAME();
else
  print 'not db';

除非您将DB_NAME()指定给变量,否则不能在没有“()”的情况下引用它。所以,你可以这样做:

declare @db_name sysname;
select @db_name = DB_NAME();

If @db_name = 'callQATemplateDB'
  print @db_name;
else
  print 'not db';