0

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

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

我已经作为测试尝试过这个 -

SELECT db_name()

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

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

任何指导将不胜感激。

4

2 回答 2

3

DB_ID() 也可以工作,并且您没有比较字符串,因此您不必考虑数据库排序规则:

IF DB_ID() = DB_ID('some_db') 
  SELECT 'GOOD DB' AS Msg
ELSE
  SELECT 'BAD DB !' AS Msg
于 2013-06-17T02:06:07.230 回答
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';
于 2013-06-17T01:52:12.707 回答