Проверить, существует ли табличная переменная? - PullRequest
1 голос
/ 01 января 2012

Я искал StackOverFlow и не нашел ни одного.

Могу ли я узнать, существует ли уже таблица Переменная ?

что-то вроде:

 IF OBJECT_ID('tempdb..#tbl') IS NOT NULL
        DROP TABLE #tbl

но для таблицы Var ...

Ответы [ 3 ]

4 голосов
/ 01 января 2012

Табличные переменные, потому что они переменные , отличаются от временных или невременных таблиц тем, что они не созданы - они объявлены .В этом отношении они гораздо ближе к «нормальным» переменным, чем к таблицам.

Таким образом, говорить о существовании табличной переменной так же важно, как и о существовании любой переменной: если вы объявиливещь в вашем исходном коде, она существует, начиная с этой точки и до конца ее области действия, которая, как известно, в SQL Server является либо пакетом, либо хранимой процедурой / функцией, в которой она объявлена. А если вы этого не сделалиобъявив переменную и пытаясь сослаться на нее в вашем коде, ваш код просто не скомпилируется, что делает бессмысленной проверку существования, если это вообще возможно.

Возможно, если вы чувствуете необходимость отбросить и заново создать/ объявление) табличной переменной в вашем скрипте, тогда вам, вероятно, следует рассмотреть возможность использования временной таблицы.

1 голос
/ 15 декабря 2017

Табличные переменные @table немного отличаются от временных таблиц #table.
Табличные переменные @table должны быть объявлены, в то время как временные таблицы #table должны создаваться.
Таким образом, согласно определению, переменные существуют междуих определенная область видимости (Begin и End).Так что нет необходимости отбрасывать переменные таблицы.

Но вы можете использовать оператор delete @table, если хотите удалить / удалить переменную таблицы.

0 голосов
/ 22 мая 2017

Я знаю, что это старая ветка, но, надеюсь, это может помочь кому-то, кто приземлится здесь.При разработке из SSMS может потребоваться повторно выполнить оператор, который выбирает переменную таблицы (например, select * into #tblvarFoo from dbName.schema.Foo).Но при втором запуске вы получите сообщение об ошибке, которое уже существует.Итак, вы решили отказаться от него в первую очередь.Но тогда у вас есть проблема, с которой столкнулся ОП:

Прежде чем я отброшу таблицу, я должен проверить, существует ли она, в противном случае я получу исключение ...

Вам не нужно удалять табличную переменную или проверять ее существование.Просто переподключитесь (щелкните правой кнопкой мыши в окне запроса и выберите «Соединение-> Изменить соединение ...») к тому же серверу / БД, что и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...