В коде можно указать глобально доступные константы / перечисления / и т. Д., Которые затем могут быть повторно использованы в приложении. Это дает возможность использовать значимые имена, такие как «Mazda» вместо цифр, таких как «2».
Мы хотели бы сделать то же самое в наших хранимых процедурах SQL Server, но не уверены в наилучшем способе реализации этого.
Например, для следующих таблиц (схема пресловутой машины):
Car ManufacturerId
350Z 1
Hilux 2
Yaris 2
ManufacturerId Name
1 Nissan
2 Toyota
Так что вместо того, чтобы писать
SELECT * FROM Car WHERE ManufacturerId = 1 -- Nissan
Мы хотели бы написать что-то вроде
SELECT * FROM Car WHERE ManufacturerId = @Nissan
Одно из ограничений, которое у нас есть, заключается в том, что мы не можем полагаться на то, что Manufacturer.Name остается неизменным в течение всего срока службы Приложения. Мы действительно думали о столбце «Код», который никогда не меняется, и объединения выглядят так:
SELECT *
FROM Car c
INNER JOIN Manufacturer m ON c.ManufacturerId = m.ManufacturerId
WHERE m.Code = 'Nissan'
Я немного сомневаюсь в этом, поскольку он использует дополнительное объединение и сравнение строк, которые могут быть написаны с ошибками.
Каков наилучший способ для этого без объявления переменных в каждой хранимой процедуре?