4

USER_NAME()SQL Server 2008 R2 で関数の値を保持したい列を使用しています。BOLでは、その関数は の戻り値の型を持つと文書化されていNVARCHAR(256)ます。

ただし、例の1つでは、次のようにします。

SELECT name FROM sysusers WHERE name = USER_NAME(1)

sysusers.name列には typeがありsysname、これは(私が理解しているように)事実上NVARCHAR(128) NOT NULLです。CURRENT_USERこの不一致は、「この関数は」と同等であると書かれている のドキュメントでさらに明確化されていますがUSER_NAME()、その型はsysname(もちろん、VARCHAR(30)列のデフォルトとして CURRENT_USER を使用する例が続きます... )

何を与える?のタイプについて BOL は間違っていUSER_NAME()ますか? そして、私が使用しても安全NVARCHAR(128)ですか?

4

1 に答える 1