本帖最后由 gzw13999 于 2014-03-11 20:22:47 编辑

解决方案 »

  1.   

    右边少了一个引号,然后得加上括号 和 字段,修改了一下你的代码,简单的例子:
    DECLARE @datechar varchar(10)
    declare @sqlchar nvarchar(1000)SET @datechar= CONVERT(varchar(10), GETDATE(), 23)
    SET @sqlchar='CREATE TABLE [dbo].[completeTopic_'+@datechar+'](' +
                 'a int,b datetime,c varchar(10)'+
                 ')'select @sqlchar--exec(@sqlchar)
      

  2.   

    动态生成的语句大概就是这样的:
    CREATE TABLE [dbo].[completeTopic_2014-03-11](a int,b datetime,c varchar(10))如果还有索引,也需要加上日期,那么和这个表的名称是一样的,另外,其他的default默认值,都是比较简单的
      

  3.   

    我这的语句Select出来的没问题可是EXEC sp_executesql @sqlchar 就这样了
    这里是不是需要转义??
      

  4.   

    拼接里面不能用go,你试试这种写法:
    DECLARE @sql NVARCHAR(max)
    SET @sql='select 1'+CHAR(13)+'go'+CHAR(13)+'select 2'
    print(@sql)/*
    select 1
    go
    select 2
    */
      

  5.   

    我这的语句Select出来的没问题可是EXEC sp_executesql @sqlchar 就这样了
    这里是不是需要转义??
    这个go,只是在ssms中执行是可以的,但是如果放到语句当中,动态执行会有问题:
    exec('select 1; 
          go 
          select 2;')
    /*
    消息 102,级别 15,状态 1,第 2 行
    'go' 附近有语法错误。*/
      

  6.   

    可以把@sqlchar的内容打印出来,手工执行看哪里报错,-- 把exec(@sqlchar)暂时换为如下语句
    print @sqlchar