用EXEC('create table +'@tablename+')

解决方案 »

  1.   

    现在的问题是运行上面的存储过程,他说在第十行CREATE TABLE @TableName中出错啊,
    我就不知道为什么会出错啊
      

  2.   

    动态的创建表不能那样写的。
    你也可以这样
    declare @sql varchar(8000)
    set @sql='create table'
    set @sql=@sql+'@tablename' +'
    (
    [SerialNum] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [CrossingSn] [int] NULL ,
    [CarBoard] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,
    [BoardColorSn] [int] NULL ,
    [CarStyleSn] [int] NULL ,
    [ChargeStyleSn] [int] NULL ,
    [ChargeTypeSn] [int] NULL ,
    [CarColorSn] [int] NULL ,
    [PassTime] [datetime] NULL ,
    [ViolationSn] [int] NULL ,
    [AlarmStyleSn] [int] NULL ,
    [InputState] [tinyint] NULL ,
    [DataState] [int] NULL ,
    [TimeSinceRed] [int] NULL ,
    [FileName] [char] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [Offset] [bigint] NULL ,
    [NearFileLen] [bigint] NULL ,
    [FarOneFileLen] [bigint] NULL ,
    [FarTwoFileLen] [bigint] NULL ,
    [FarThreeFileLen] [bigint] NULL ,
    [RunDirection] [int] NULL ,
    [CarSpeed] [float] NULL ,
    [CarLength] [int] NULL ,
    [FirstPosition] [int] NULL ,
    [SecondPosition] [int] NULL ,
    [PassUseTime] [int] NULL ,
    [OperatorSn] [int] NULL ,
    [AmendTime] [datetime] NULL ,
    [SendTime] [datetime] NULL ,
    [Reserve] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Re] [char] (32) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    '
    exec(@sql)
      

  3.   

    declare @sql varchar(8000)
    set @sql='create table '+'@tablename' +' 
    (
    [SerialNum] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [CrossingSn] [int] NULL ,
    [CarBoard] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,
    [BoardColorSn] [int] NULL ,
    [CarStyleSn] [int] NULL ,
    [ChargeStyleSn] [int] NULL ,
    [ChargeTypeSn] [int] NULL ,
    [CarColorSn] [int] NULL ,
    [PassTime] [datetime] NULL ,
    [ViolationSn] [int] NULL ,
    [AlarmStyleSn] [int] NULL ,
    [InputState] [tinyint] NULL ,
    [DataState] [int] NULL ,
    [TimeSinceRed] [int] NULL ,
    [FileName] [char] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [Offset] [bigint] NULL ,
    [NearFileLen] [bigint] NULL ,
    [FarOneFileLen] [bigint] NULL ,
    [FarTwoFileLen] [bigint] NULL ,
    [FarThreeFileLen] [bigint] NULL ,
    [RunDirection] [int] NULL ,
    [CarSpeed] [float] NULL ,
    [CarLength] [int] NULL ,
    [FirstPosition] [int] NULL ,
    [SecondPosition] [int] NULL ,
    [PassUseTime] [int] NULL ,
    [OperatorSn] [int] NULL ,
    [AmendTime] [datetime] NULL ,
    [SendTime] [datetime] NULL ,
    [Reserve] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Re] [char] (32) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    '
    exec(@sql)
      

  4.   

    1.存儲過程用臨時表實現,create table #tablename...
    2.用樓上的方法,EXEC('create table +'@tablename+'),先生成建表字符串,再通過
    EXEC('...')執行。