Лучший шаблон для констант в SQL?
Я видел несколько шаблонов, используемых для «преодоления» отсутствия констант в SQL Server, но ни один из них, по-видимому, не удовлетворял ни проблемам производительности, ни читаемости / удобства обслуживания.
В приведенном ниже примере, предполагая, что у нас есть интегральная классификация «статус» в нашей таблице, варианты, как представляется:
Просто жестко закодировать его и, возможно, просто «прокомментировать» статус-- StatusId 87 = Loaded
SELECT ... FROM [Table] WHERE StatusId = 87;
Использование таблицы поиска для состояний, а затем присоединение к этой таблице, чтобыWHERE
пункт ссылается на понятное имя.подзапрос:
SELECT ...
FROM [Table]
WHERE
StatusId = (SELECT StatusId FROM TableStatus WHERE StatusName = 'Loaded');
или присоединился
SELECT ...
FROM [Table] t INNER JOIN TableStatus ts On t.StatusId = ts.StatusId
WHERE ts.StatusName = 'Loaded';
Связка скалярных UDF, которые возвращают константы, а именноCREATE Function LoadedStatus()
RETURNS INT
AS
BEGIN
RETURN 87
END;
а потом
SELECT ... FROM [Table] WHERE StatusId = LoadedStatus();
(IMO это вызывает много загрязнения в базе данных - это может быть хорошо в оболочке пакета Oracle)
И аналогичные шаблоны с табличными функциями, содержащими константы со значениями в виде строк или столбцов, которыеCROSS APPLIED
вернуться к[Table]
Как другие пользователи SO решили эту общую проблему?
редактировать : Щедрость - есть ли у кого лучший метод для поддержания $ (переменных) в сценариях DBProj DDL / Schema согласно ответу и комментарию Remus?