使用這種方式:exec(' create table '+@TableName+'字段信息')

解决方案 »

  1.   

    --split data related with our company
    CREATE PROCEDURE split_data
    @BeginDate DATETIME
    AS
    DECLARE @TableName VARCHAR(20)
    SET @TableName=YEAR(@BeginDate)+'split_results'
    IF NOT EXISTS ( SELECT * FROM sysobjects 
                  WHERE id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    declare @sql varchar(1000)
    set @sql='   CREATE TABLE '+@TableName+'( date_time       datetime    not null,  ownerstation    int         not null ) '
    exec(@sql)
      

  2.   

    --用exec就可以了:--split data related with our company
    CREATE PROCEDURE split_data
    @BeginDate DATETIME
    AS
    DECLARE @TableName VARCHAR(20)
    SET @TableName=YEAR(@BeginDate)+'split_results'
    IF NOT EXISTS ( SELECT * FROM sysobjects 
                  WHERE id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    exec('   CREATE TABLE ['+@TableName+'](
    date_time       datetime    not null, 
    ownerstation    int         not null, ) 
    ')
      

  3.   

    使用动态的sql就解决了
    exec('   CREATE TABLE ['+@TableName+'](
    date_time       datetime    not null, 
    ownerstation    int         not null, ) 
    ')
      

  4.   

    谢谢两位
    有一问题
     
    progress99(如履薄冰)的不能通过,
    我找了半天原来是
    zjcxc(: 邹建 :) 的 CREATE TABLE ['+@TableName+'](
    多了两个[ ]
    能不能解释一下为什么?
    是因为表名的第一个字符不能是数字?