Опрос других таблиц siscolumns shema - PullRequest
0 голосов
/ 15 ноября 2018

Я выполняю SQL-запрос для проверки схемы погоды. abc_hist имеет таблицу @ table_name или нет. но следующий запрос не может привести ни к какому результату, даже если таблица существует, т. е. каждый раз выполняется условие if:

use abc
go
----procedure---
IF EXISTS(select  1
                  from    abc_hist..syscolumns
                  where   status & 128 = 128
                          and     object_name(id) = @table_name )
----procedure---

Итак, есть ли другой способ эффективной проверки существования таблицы в другой схеме или исправления в моем текущем sql?

1 Ответ

0 голосов
/ 15 ноября 2018

Запустите это:

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 )
...