我希望创建一个表来存储有关存储过程的信息。我需要存储 SP_Name
.我最初的计划是使用 SP_Name NVARCHAR(128) NOT NULL
.
从程序我将使用 OBJECT_NAME(@@PROCID)
获取 SP_Name
的值的函数柱子。
此 technet没有提供关于 SYSNAME
的太多信息数据类型。 What is SYSNAME data type in SQL Server?问题只解释了它是什么,而不是它是如何工作的,另外答案已经有将近 3 年的历史了,微软在 2012 和 2014 版本中对 SQL Server 进行了多次升级。
我会再次存储任何好处SP_Name
在 SYSNAME
在 NVARCHAR(128)
柱子?或者我应该避免使用可能在更高版本中删除或更改的专有数据类型?
最佳答案
它提供了一种抽象,使您免受实现细节的影响。好处是,如果 future 版本中的定义发生变化,您的代码仍然可以正常工作。sysname
曾经相当于 varchar(30)
.例如,如果 SQL Server 2016 允许对象标识符长度为 256 个字符,则您不需要查找和更新所有硬编码的 128 个字符。
我也更喜欢使用它,因为无论如何使用该数据类型存储对象标识符的列/变量在语义上看起来更整洁。
关于sql - 将 name 存储为 "sysname"而不是 "nvarchar(128)"有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884200/