查询其他shema syscolumns表

时间:2018-11-15 10:45:40

标签: sql sybase sybase-iq

我正在执行SQL查询以检查天气模式 abc_hist 是否具有表 @table_name 。但是即使表存在,以下查询也无法返回任何结果,即每次条件为false时

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 :(得分:1)

运行此:

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没有Identity列,并且因为您将where子句作为条件,结果必须是一个身份列才能返回,没有结果,所以EXISTS始终为假

如果要使用此查询检查表的存在,请删除状态的WHERE子句:

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