Почему MS Sql Server (2005 и 2008; не тестировался где-либо еще) вызывает ошибку, если столбца в таблице не существует, до того, как возникает ошибка, если таблицы не существует?
Более конкретно, у меня есть следующая схема (сильно уменьшенная, чтобы показать все важное):
CREATE TABLE table1 (
id int identity(1,1) primary key
)
Почему следующий запрос завершается ошибкой Invalid column name 'iDoNotExist'.
?
if 1=2
begin
print 'table that shouldn''t exist does'
select * from [IDoNotExist]
end
if 1=2
begin
print 'column that shouldn''t exist does'
select iDoNotExist from table1
end
Я ожидаю, что он либо потерпит неудачу с множественными ошибками (как если бы он фактически скомпилировал и заметил, что таблицы и столбца не было), либо без ошибок (как если бы он игнорировал содержимое операторов if, поскольку они были не собираюсь бежать). Что я могу сделать, чтобы он работал без ошибок?
PS фактический запрос имеет это в операторах if, но это не имеет никакого значения:
exists (select * from [INFORMATION_SCHEMA].[COLUMNS] t where t.[TABLE_NAME] = 'table1' and t.[COLUMN_NAME] = 'iDoNotExist')