declare @s_SQL varchar(256) set @s_SQL = 'create table table1(field1 int)' exec(@s_SQL) select * from table1 drop table table1
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
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
只能用##table1这样的临时表 declare @s_SQL varchar(256) set @s_SQL = 'create table ##table1 (field1 int)' exec(@s_SQL)select * from ##table1drop table ##table1
declare @s_SQL varchar(256)
set @s_SQL = 'create table table1(field1 int)'
exec(@s_SQL)
select * from table1
drop table table1
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
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
declare @s_SQL varchar(256)
set @s_SQL = 'create table ##table1 (field1 int)'
exec(@s_SQL)select * from ##table1drop table ##table1
declare @n nvarchar(90),@sql nvarchar(1000)
select @n='mytemptable',@SQL='create table '+@n +' (field1 int)'
exec sp_executesql @sql
goselect * from mytemptable
go
只可以创建全局临时表
要不你可以创建一个表也行,为什么非得是临时表
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
exec函数相当于调用一个存储过程,所以在此函数中的临时表的作用域只是该函数,当函数执行完,临时表就无效了感谢nboys高手