Отключить проверку скриптов TSQL? - PullRequest
6 голосов
/ 29 марта 2010

Допустим, у меня есть такой скрипт:

if (некоторые условия) начать выберите somecolumn из sometable конец

Позволяет сказать, что «somecolumn» не существует, и условие не является истинным, что означает, что выбор НЕ выполнен. Несмотря на то, что выбор не будет выполнен, скрипт недопустим, Management Studio жалуется на отсутствующий столбец «somecolumn».

Вопрос: Могу ли я как-то отключить такую ​​проверку, чтобы скрипт выполнялся, и, поскольку if не соответствует true, он никогда не заметит, что столбец отсутствует?

Спасибо: -)

Ответы [ 2 ]

4 голосов
/ 29 марта 2010

Использовать динамический SQL

if(some condition)
begin
    exec ('select somecolumn from sometable') --or sp_executesql
end

На самом деле не имеет смысла запускать это из-за того, что такое SQL. Он не выполняется построчно: весь пакет анализируется и т. Д. За один раз, и здесь генерируется ошибка, прежде чем что-то действительно будет работать в том смысле, который вы имеете в виду. Это по замыслу ...

2 голосов
/ 29 марта 2010

Вы можете создать процедуру, которая ссылается на несуществующую таблицу, однако это единственное исключение из правила. С БОЛ:

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

Помимо использования динамического SQL, нет средств для ссылки на несуществующие столбцы в хранимой процедуре.

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