好象exec不能执行一条sql语句吧》?

解决方案 »

  1.   


    declare @s_SQL varchar(256)
    set @s_SQL = 'create table table1(field1 int)'
    exec(@s_SQL)
    select * from table1
    drop table table1
      

  2.   

    try
    declare @s_SQL varchar(256)
    declare @table varchar(256)
    set @table='名字'
    set @s_SQL = 'create table '+@table+'(field1 int)'
    exec(@s_SQL)
    select * from @table
    drop table @table
      

  3.   

    declare @s_SQL varchar(256)
    declare @str nvarchar(20)
    set @str='##table1'
    set @s_SQL = 'create table '+@str+'(field1 int)'
    exec(@s_SQL)
    go
    select * from ##table1
    drop table ##table1
      

  4.   

    只能用##table1这样的临时表
    declare @s_SQL varchar(256)
    set @s_SQL = 'create table ##table1 (field1 int)'
    exec(@s_SQL)select * from ##table1drop table ##table1
      

  5.   


    declare @n nvarchar(90),@sql nvarchar(1000)
    select @n='mytemptable',@SQL='create table '+@n +' (field1 int)'
    exec sp_executesql @sql
    goselect * from mytemptable
    go
    只可以创建全局临时表
    要不你可以创建一个表也行,为什么非得是临时表
      

  6.   

    所以:declare @s_SQL varchar(256)
    set @s_SQL = 'create table #table1(field1 int)'
    exec(@s_SQL+'select * from #table1 drop table #table1')or declare @s_SQL varchar(256)
    set @s_SQL = 'create table ##table1(field1 int)'
    exec(@s_SQL)
    select * from ##table1
    drop table ##table1
      

  7.   

    我大概理解了
    exec函数相当于调用一个存储过程,所以在此函数中的临时表的作用域只是该函数,当函数执行完,临时表就无效了感谢nboys高手