CREATE PROCEDURE system_test(@out nvarchar(50)output)
as
if exists(select 1 from syscolumns where id=object_id('System_test') and name='System_run') 
select @out='yes'
else
select @out='no'
说明:表'System_test'是我已经建好的,我就是想检查已经存在的表'System_test'它有没有列'System_run'?

解决方案 »

  1.   

    CREATE PROCEDURE system_test(@out nvarchar(50)output)
    as
    begin
        --syscolumns表是一个系统表,name列记录字段的名称,id列记录字段归属的表在sysobjects系统表中对应的id
        if exists(select 1 from syscolumns where id=object_id('System_test') and name='System_run') 
            select @out='yes'
        else
            select @out='no'
    end
    go
      

  2.   

    这样的错误提示:数据库中已经存在'System_test'对象
      

  3.   

    有更多疑问,先查阅SQL Server 2000联机帮助的syscolumns及sysobjects内容部分。
      

  4.   

    CREATE PROCEDURE system_test  -- 存储过程名与已经存在的表名相同,自然冲突
    (@out nvarchar(50)output)
    as
    if exists(select 1 from syscolumns where id=object_id('System_test') and name='System_run') 
    select @out='yes'
    else
    select @out='no'
      

  5.   

    注意:表在'System_test'是事先建好的,存在的,这样的错误提示:数据库中已经存在'System_test'对象
      

  6.   

    syscolumns --系統表存放列的信息
    name --字段是列名
    id --關聯表的ID老大的語句沒問題, 很好啊