Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 if ... else  [new]
T-SQL
Guest
/*
create table tab1 (
fld1 varchar(20)
)
insert into tab1 (fld1)
values ('aaa')
*/

if exists (SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tab1'
and COLUMN_NAME = 'fld2')

-- таблица существует, поле существует
--select * from tab1 WHERE fld1 = 'aaa'	-- else

-- таблица НЕ существует, поле существует
--select * from tab2 WHERE fld2 = 'bbb'	-- else

-- таблица существует, поле НЕ существует
select * from tab1 WHERE fld2 = 'aaa'	-- Invalid column name 'fld2'.

else

select 'else'


Почему в третьем случае эта строка не игнорируется как в первых двух, а обрабатывается и выдает ошибку?

Спасибо!
27 ноя 12, 12:17    [13535238]     Ответить | Цитировать Сообщить модератору
 Re: if ... else  [new]
Glory
Member

Откуда:
Сообщений: 104751
T-SQL
Почему в третьем случае эта строка не игнорируется как в первых двух, а обрабатывается и выдает ошибку?

Потому что при компиляции игнорируются все ветвления кода. Компилируются все команды. Ибот сервере не знает, какие из них будут выполнены, а какие не будут
27 ноя 12, 12:20    [13535263]     Ответить | Цитировать Сообщить модератору
 Re: if ... else  [new]
T-SQL
Guest
Спасибо,

Если это так, то почему не выдается ошибка во втором случае, когда таблица НЕ существует?
27 ноя 12, 12:45    [13535478]     Ответить | Цитировать Сообщить модератору
 Re: if ... else  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
T-SQL
Спасибо,

Если это так, то почему не выдается ошибка во втором случае, когда таблица НЕ существует?

бай дизайн
27 ноя 12, 12:51    [13535518]     Ответить | Цитировать Сообщить модератору
 Re: if ... else  [new]
invm
Member

Откуда: Москва
Сообщений: 9724
T-SQL,

Deferred Name Resolution and Compilation
27 ноя 12, 12:57    [13535572]     Ответить | Цитировать Сообщить модератору
 Re: if ... else  [new]
T-SQL
Guest
Спасибо всем!
27 ноя 12, 13:06    [13535648]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить