选择 DB_NAME(0) 这可能吗?

选择 DB_NAME(0) 这可能吗?

我最近看到当我发布

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>

如果我错了,我很抱歉。

相关内容