Obecnie zdefiniować listę stałych (głównie te odpowiadają wyliczeń mamy zdefiniowane w warstwie biznesowej) w górnej części procedury przechowywanej tak:Jakie są różne sposoby obsługi wyliczeń na serwerze SQL?
DECLARE @COLOR_RED INT = 1
DECLARE @COLOR_GREEN INT = 2
DECLARE @COLOR_BLUE INT = 3
Ale te często są powtarzane dla wielu procedur przechowywanych tak jest dużo duplikacji.
Inną techniką, której używam, jeśli procedura wymaga tylko jednej lub dwóch stałych, jest przekazanie ich jako parametrów do procedury przechowywanej. (używając tej samej konwencji wielkich liter dla stałych wartości). W ten sposób jestem pewien, że wartości w warstwie biznesowej i warstwie danych są spójne. Ta metoda nie jest dobra dla wielu wartości.
Jakie są pozostałe opcje?
Używam programu SQL Server 2008 i C#, jeśli ma to jakiekolwiek znaczenie.
Aktualizacja Ponieważ używam .Net jest jakiś sposób, że typy zdefiniowane przez użytkownika (CLR) mogą pomóc?
Obcy klucz w wyliczeniach jest dobry, ale w jaki sposób są używane wartości w procedurze przechowywanej? – tpower
@tpower: Nie do końca jestem pewien, że rozumiem twoje pytanie, ale zazwyczaj przekazywałbym wartości ciągu enum do sproc i natychmiast tłumaczyłem je na obce klucze używając funkcji, o której wspomniałem. W związku z tym aplikacja zajmuje się tylko wartościami wyliczonymi, kod DB dotyczy tylko wartości kluczy obcych. – Adamski
Mam na myśli to, że jeśli procedura składowana zawiera logikę biznesową, taką jak "IF @MyVariable = @ MY_ENUMERATION_VALUE_2 THEN", w której musimy podać wartość, klucze obce nie pomagają tutaj. – tpower