通常我们会像这样在SQL Server中定义varchar。
在存储过程中,输入变量@name将声明为
@name varchar(32);
然而,“32”是硬编码的。其他开发人员会在其他一些商店程序中使用24,64或其他东西。
很难维持。
有没有办法像这样写?
@name varchar(VAR_NAME_LENGTH);
VAR_NAME_LENGTH在全球某处定义,如C
#define VAR_NAME_LENGTH 32
然后所有开发人员都可以坚持使用这个宏而不是硬代码32。
不确定这是否可以在SQL Server中使用。
还是其他好主意?
注意:SQL Server版本是2008 SP2。
答案 0 :(得分:0)
可以使用user-defined data types。但是,在实践中它并没有那么有用,因为你不能轻易改变自定义类型的定义。
有关详细信息,请参阅Aaron Bertrand撰写的文章Bad habits to kick : using alias types。
在那篇文章的评论中,亚历山大库兹涅佐夫说:
实际上,我们非常需要能够定义一次类型并使用它 多次。为此,我使用宏并运行标准C ++ 对我所有的SQL代码进行预处理以扩展它们。
例如,要转换我用于定义的包含文件
#define MAX_VARCHAR VARCHAR(8000)
在我的代码中,我可以在我的系统上写下这个:
[Comments] MAX_VARCHAR,
将扩展为
[Comments] VARCHAR(8000),
转换为2005年,我将宏替换为:
#define MAX_VARCHAR VARCHAR(MAX)
让SQL Compare处理所有细节。
因此,如果您已将所有数据库对象编写为脚本(在任何情况下都很好),那么在运行最终的T-SQL脚本来创建数据库之前,需要运行预处理器的额外步骤。 / p>