declare @TableName varchar(200)set @TableName='#tmpTable'Exec('create table ' + @TableName + '(field1 char(1), .....)')

解决方案 »

  1.   

    原来sql也可以这样用,谢谢了!
      

  2.   

    注意临时表#tmpTable用exec好像创建不了,只能用物理表
    declare @TableName varchar(200)set @TableName='tmpTable'Exec('create table ' + @TableName + '(field1 char(1))')select * from tmpTable而我用下面这个就提示出错
    declare @TableName varchar(200)set @TableName='#tmpTable'Exec('create table ' + @TableName + '(field1 char(1))')select * from #tmpTable服务器: 消息 208,级别 16,状态 1,行 7
    对象名 '#tmpTable' 无效。
      

  3.   

    declare @TableName varchar(200)set @TableName='#tmpTable'exec('create table '+@TableName+'
    (field1 char(1),
     .....
    )')但你要注意:
    #局部临时表的生命周期的会话!!##全局临时表的生命周期是全局它是会冲突的!你可以打开两个查询分析器,一个查询分析器的连接算是一个会话!
    你分别创建两个同名的临时表是不会发生错误的!
    而你别创建两个同名的全局临时表是会发生错误的!你这样建的临时表在外面不能引用,你要改为:
    declare @TableName varchar(200)set @TableName='##tmpTable'exec('create table '+@TableName+'
    (field1 char(1),
     .....
    )')
    select * from ##tmpTabledrop table ##tmpTable
      

  4.   

    declare @TableName varchar(200)
    declare @create_sql varchar(800)
    set @TableName='#tmpTable'
    set @create_sql = 'create table ' + rtrim(@TableName) + '(field1 char(1),...)'
    Exec(@create_sql)
      

  5.   

    declare @TableName varchar(200),@sql nvarchar(1000)
    select @TableName='##tmpTable'
    select @sql='create table'+ ' '+ @TableName+'(field1 char(1))'
    print @sql
    exec sp_executesql @sql
    局部临时表,不可以创建,你用全局临时表吧
    要不你创建物理表也可以
      

  6.   

    是可以呀,我没说不可以但你不能在外面引用它,如:exec('create table #xx ...')select * from #xx --这句会报错!