Sql 查询其他shema syscolumns表
我正在执行SQL查询以检查天气模式abc\u hist是否有表@table\u name。但以下查询即使在表存在时也无法返回任何结果,即每次都使if条件为false:Sql 查询其他shema syscolumns表,sql,sybase,sap-iq,Sql,Sybase,Sap Iq,我正在执行SQL查询以检查天气模式abc\u hist是否有表@table\u name。但以下查询即使在表存在时也无法返回任何结果,即每次都使if条件为false: use abc go ----procedure--- IF EXISTS(select 1 from abc_hist..syscolumns where status & 128 = 128
use abc
go
----procedure---
IF EXISTS(select 1
from abc_hist..syscolumns
where status & 128 = 128
and object_name(id) = @table_name )
----procedure---
所以,问题是,有没有其他方法可以有效地检查表在其他模式中的存在或我当前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
如果要使用此查询检查表是否存在,请删除状态上的WHERE子句:
IF EXISTS(select 1
from abc_hist..syscolumns
where object_name(id) = @table_name )
谢谢你对身份的使用使它更容易理解。