3
创建数据库级别的常量(枚举)而不使用CLR?
我有几个SQL对象,它们需要根据请求的期望状态采取其他操作。有没有一种方法可以创建数据库级别的常量(枚举),这些常量可以传递给存储过程,表值函数并可以在查询中使用(不使用CLR)? CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumValue myEnumType) AS ...; 然后使用它: EXEC doSomeWork 85, ..., (myEnumType.EnumValue1 + myEnumType.EnumValue2); 哪里myEnumType将保留一些枚举值。 在该过程中,我将能够使用@EnumValue它并针对其中的值进行测试myEnumType以完成所需的工作。我将myEnumType考虑的情况下使用位掩码的值。 举一个简单的例子,考虑一个昂贵的过程,该过程需要一个庞大的数据集并将其缩减为较小但仍然非常大的数据集。在此过程中,您需要在过程的中间进行一些调整,以免影响结果。说这是基于归约内中间计算的某些状态来过滤(或针对)某些类型的记录。该@EnumValue类型的myEnumType可以用来测试此 SELECT ... FROM ... WHERE (@EnumValue & myEnumType.EnumValue1 = myEnumType.EnumValue1 AND ...) OR (@EnumValue & myEnumType.EnumValue2 = myEnumType.EnumValue2 AND ...) OR ... 在不使用CLR的情况下,SQL Server中是否可能存在这类数据库级别的常量? 我正在寻找数据库级别的枚举或常量集,这些枚举或常量集可以作为参数传递给存储过程,函数等。