Я работаю в БД, которая имеет около 10 DEFAULT
ограничений, разбросанных по двум или трем различным таблицам, и мне нужно написать хранимую процедуру, которая получает в качестве значений параметров для всех этих атрибутов. Однако, если значения не получены, я хочу, чтобы эти параметры принимали значения по умолчанию в соответствующей таблице. Зная, что не существует простого способа сделать это, я подумал о написании пользовательских UDF, возвращающих значения по умолчанию, добавляя ограничения как DEFAULT (dbo.SomeFunction()) FOR [Attribute]
и добавляя = dbo.SomeFunction()
в качестве значения по умолчанию для каждого параметра. Я хотел бы, однако, спросить, как лучше всего это сделать:
1) Написать UDF для каждого атрибута, упрощая выполнение, но заканчивая 10 различными функциями; или
2) Запишите один dbo.GetDefault(TableName NVARCHAR(32), AttributeName NVARCHAR(32)
и используйте IF ... ELSE ...
или SWITCH
для различных пар таблица / атрибут.
Что вы думаете?