TSQL - Как объявить переменную как другой (udtt) тип в зависимости от некоторых условий? - PullRequest
0 голосов
/ 12 сентября 2018

В настоящее время я пытаюсь объявить переменную @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 - хотя мое понимание причин этого более ограничено.

Кто-нибудь может предложить способ, которым можно достичь желаемого результата?

...