В настоящее время я пытаюсь объявить переменную @MyTable как определенный пользователем тип таблицы (udtt).Однако то, какое значение объявлено как, зависит от значения переменной @Schema.Для этого я предпринял следующие попытки:
Попытка первая:
IF (@Schema = 'sch_A') DECLARE @MyTable [sch_A].[udtt_Table]
IF (@Schema = 'sch_B') DECLARE @MyTable [sch_B].[udtt_Table]
IF (@Schema = 'sch_C') DECLARE @MyTable [sch_C].[udtt_Table]
Попытка вторая:
DECLARE @sql = 'DECLARE @MyTable [' + @Schema + '].[udtt_Table]'
Проблема с моей первой попыткой заключается в том, чтоПеременная @MyTable объявляется каждым оператором IF, даже если она оценена как ложная.Это приводит к ошибке, утверждающей, что переменная @MyTable уже объявлена и выброшена.Этот вопрос обсуждается здесь .
Проблема с моим вторым также связана с областью действия переменной @MyTable - хотя мое понимание причин этого более ограничено.
Кто-нибудь может предложить способ, которым можно достичь желаемого результата?