存储过程如何判断一张表如果存在就不创建。

解决方案 »

  1.   

    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]') 
    AND type in (N'U')) 
    DROP TABLE [TB]
      

  2.   

    IF not EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]') 
    AND type in (N'U')) 
    create table [TB]([tret] varchar(3))
     晕 反了
      

  3.   

    if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    begin
    create table [dbo].[tb](id int,......)
    end
      

  4.   

    请问AND type in (N'U')) 
    是什么有意思
      

  5.   

    N'IsUserTable') = 1)
     
    isUsertable 这个是什么
      

  6.   

    exec('
    IF not EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'+@symname+')
    AND type in (N'table')) 
    -- 删除表 
    drop table '+@symname+'
    create table '+@symname+'
    (symname varchar(20),
    disname varchar(20),
    odd float,
    disid int,
    symid int,
    ls int,
    hodd float,
    oj float
    )')
    为什么还是提醒table错误呢
      

  7.   

    IF OBJECT_ID('TB','U') IS NOT NULL
    DROP TABLE TBXXXX
      

  8.   

    exec('
    IF not EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'+@symname+')
    AND type in (N''table''))  
    -- 删除表  
    drop table '+@symname+'
    create table '+@symname+'
    (symname varchar(20),
    disname varchar(20),
    odd float,
    disid int,
    symid int,
    ls int,
    hodd float,
    oj float
    )')
      

  9.   


    IF OBJECT_ID('TB','U') IS NULL
    CREATE TB 
      

  10.   

    Msg 207, Level 16, State 1, Line 1
    列名 'N发热' 无效。
    Msg 208, Level 16, State 1, Line 1
    对象名 '发热' 无效。
    参数传进去 发生错误 。没判断存在的时候 
    表是可以动态建的
      

  11.   

    exec('
    IF not EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'+@symname+')
    AND type in (N''table''))  
    -- 删除表  
    drop table '+@symname+'
    create table '+@symname+'
    (symname varchar(20),
    disname varchar(20),
    odd float,
    disid int,
    symid int,
    ls int,
    hodd float,
    oj float
    )')   传参数 会产生上面的错误
      

  12.   

    好了 谢谢大家 。exec('
    IF not EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''+@symname+'')
    AND type in (N''table''))  
    -- 删除表  
    drop table '+@symname+'
    create table '+@symname+'
    (symname varchar(20),
    disname varchar(20),
    odd float,
    disid int,
    symid int,
    ls int,
    hodd float,
    oj float
    )')   这个才是正确的