我正在处理一个我想USER_NAME()
在 SQL Server 2008 R2 中保存函数值的列。在BOL中,该函数被记录为返回类型为NVARCHAR(256)
.
但是,在其中一个示例中,他们这样做:
SELECT name FROM sysusers WHERE name = USER_NAME(1)
并且该sysusers.name
列具有 type sysname
,它(据我所知)实际上是一个NVARCHAR(128) NOT NULL
. 这种不一致在 的文档中得到了进一步巩固CURRENT_USER
,其中说“这个函数相当于USER_NAME()
”,但表明它的类型是sysname
(当然,它接着有一个例子,它使用 CURRENT_USER 作为VARCHAR(30)
列的默认值...... )
是什么赋予了?BOL 的类型是否错误USER_NAME()
?我使用它安全NVARCHAR(128)
吗?