查询其他 shema 系统列 table

Querying other shema syscolumns table

我正在执行 SQL 查询以检查天气模式 abc_hist 有 table @table_name 还是不行。但是即使 table 存在,以下查询也无法 return 任何结果,即每次都使 if 条件为假:

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

那么,问题是有没有其他方法可以有效地检查 table 是否存在于其他架构中或更正我当前的 sql?

运行这个:

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

它会在每一行中显示 "not identity",这意味着您作为参数传入的 @table_name 没有标识列,并且因为您将结果设为 where 子句的条件必须是标识列才能返回,没有结果,所以 EXISTS 始终为 false

如果您想使用此查询来检查 table 是否存在,请删除有关状态的 WHERE 子句:

IF EXISTS(select  1
              from    abc_hist..syscolumns
              where   object_name(id) = @table_name )