我们为不同的公司运行多个数据库,并且正在尝试建立一个模板数据库,我们知道我们的标准sql脚本可以工作。
因此我编写了需要在多个数据库上运行的SQL脚本,但是在运行脚本之前我需要一些代码来检查数据库名称,如果它是“xyz.db”那么它将跳过部分码。 (if-else声明)。
我作为测试尝试了这个 -
SELECT db_name()
If DB_NAME = 'callQATemplateDB'
print db_name
else
print 'not db'
但是我收到以下错误消息 - 在此上下文中不允许使用名称“db_name”。有效表达式是常量,常量表达式和(在某些上下文中)变量。不允许使用列名。
任何指导都将不胜感激。
答案 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';