Запустите это:
select
CASE WHEN status & 8> 0 THEN 'allows null' ELSE 'no nulls' end,
CASE WHEN status & 16 > 0 THEN 'check constraint exists' ELSE 'no checks' end,
CASE WHEN status & 128 > 0 THEN 'is identity' ELSE 'not identity' end,
*
from abc_hist..syscolumns
where object_name(id) = @table_name
В каждой строке будет указано «не тождество», что означает, что @table_name
, который вы передали в качестве параметра, не имеет столбцов идентификаторов, а также потому, что вы сделали условие условия where, что результаты должны быть столбцом идентификаторов. для возврата нет результатов, поэтому EXISTS всегда ложно
Удалите предложение WHERE о состоянии, если вы хотите использовать этот запрос для проверки существования таблицы:
IF EXISTS(select 1
from abc_hist..syscolumns
where object_name(id) = @table_name )