我最近意外地写了一个非常丑陋的存储过程,我希望我有枚举,
例如.
CREATE PROCEDURE Proc_search_with_enum @user int, @account_category {enum}
Run Code Online (Sandbox Code Playgroud)
我知道SQL 2000没有枚举作为第一类语言结构,您使用哪种编码约定来模拟枚举或以其他方式解决同一问题?
或者我是否注定只使用VARCHAR和IF @ account_category ='cat1'?
编辑:T-SQL和C#是客户端语言.
编辑:谢谢大家!很多好建议,我希望我能接受几个答案,我已经投票给所有人 -
答案摘要
Ron*_*erg 12
你可以看一下这个问题的答案.据我所知,枚举类型不是SQL Server的一部分.
总之,最好是使用积分(INT,TINYINT,...),键入您的枚举不是字符串类型.通常,所选编程语言中的枚举类型更好地对应于整数而不是字符串.
在C#中,默认情况下每个枚举值对应一个整数,从0开始.你甚至可以在它们之间进行转换,所以这是有效的代码:
public enum MyEnum
{
FirstEnumValue,
SecondEnumValue
}
...
// Assuming you have opened a SqlDataReader.
MyEnum enumValue = (MyEnum) reader["account_category"];
Run Code Online (Sandbox Code Playgroud)
LINQtoSQL也支持这一点.如果您有一个枚举类型的属性,并且您的数据库列是整数类型,则转换是自动的.