我最近看到当我发布
select DB_NAME(0)
有一些答案,当我检查 sys.databases 时,没有 DB ID 0,所以我认为应该返回 NULL。如果我选择 DB_NAME(1000) 并且没有 db id 1000,则返回 NULL。
我注意到我当前正在使用的数据库始终显示出来。
这是正常的吗?这是一个错误还是什么?
答案1
我不认为任何数据库会有一个 id 为零或负数。根据官方的 Microsoft Books Online文档对于 db_name():
参数:database_id 是要返回的数据库的标识号 (ID)。database_id 是 int,没有默认值。如果未指定 ID,则返回当前数据库名称。
因此,我想说这种行为有点有趣,但它是未定义的,不应该依赖于生产代码。
我一直使用不带参数的 db_name() 来查找当前数据库的名称。
答案2
我不是 100% 但你不应该使用:
USE <DBNAME>
GO
SELECT <STATEMENT>
如果我错了,我很抱歉。