IF ((SELECT count(name) FROM syscolumns WHERE name = 'foobar') > 0)
BEGIN
SELECT 'exists'
--, foobar FROM baz -- <--rename this to a table that exists
END
ELSE
SELECT 'boo'
IF (exists(SELECT name FROM syscolumns WHERE name = 'foobar'))
BEGIN
SELECT 'exists'
--, foobar FROM baz -- <--rename this to a table that exists
END
ELSE
SELECT 'boo'
Оба эти утверждения должны вызывать для вас «boo» (выполнить их против любого db).Тестирование столбца, потерявшего мой разум
Раскомментирует второй ВЫБРАТЬ значение в каждом запросе (Foobar) ...
Насколько я могу судить, @!% $ ING двигатель вычисляет выражения БУДЬ ОНИ HIT ИЛИ НЕ !!! НИКОГДА НЕ УМЕНЬШИТЕ ЛОГИКУ!
Я высокий? Смущенный? Глупый?
Извините за все шапки, просто очень расстроены этим.
Я озадаченный, хотя - логика работает, как и следовало ожидать, пока я не включать полевые испытания в BEGIN/END блок пути Истины ... а потом barfs рассказывал мне колонку Безразлично» t существует. Я бы ожидал, что если столбец не существует, он не оценит эту часть в первую очередь. – dreynold
Попробуйте изменить колонку на то, что существует, и она будет работать нормально. Проблема в том, что логика заключается в том, что этот кодовый блок никогда не будет выполняться, но при компиляции SQL механизм БД оценивает и определяет, что столбец не существует. Отсюда и ошибка. – Raj
Ahhh - Это объясняет ... Похоже, мне нужно вывести логику из моего динамического SQL и в другой кусок исполнения. Благодаря! – dreynold