declare @TableName varchar(200)set @TableName='#tmpTable'Exec('create table ' + @TableName + '(field1 char(1), .....)')
解决方案 »
- 怎样安装sql server JDBC驱动程序
- UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='ybzx'
- 如何在SQL Server中跨服务器访问数据库?
- 我安装了个MYSQL4.1.9 可是安装完后不知道哪个程序启动啊!
- 高分求!!! SQl Server中提高数据插入和检索的方法
- 高分请教一条SQL语句,在线等.....
- SQL SERVER 连接失败
- 关于如何删除曾经做过复制后数据库表的问题
- SQL安装过程中发生错误,求达人帮忙!
- 我想通过存储过程实现,表名做为参数传进去,不知道如何解决!急!
- 请问ms sql2000能否在 windows2003运行正常,有先例吗?
- 怎样在同一个表中出现两个自增的字段?急
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' 无效。
(field1 char(1),
.....
)')但你要注意:
#局部临时表的生命周期的会话!!##全局临时表的生命周期是全局它是会冲突的!你可以打开两个查询分析器,一个查询分析器的连接算是一个会话!
你分别创建两个同名的临时表是不会发生错误的!
而你别创建两个同名的全局临时表是会发生错误的!你这样建的临时表在外面不能引用,你要改为:
declare @TableName varchar(200)set @TableName='##tmpTable'exec('create table '+@TableName+'
(field1 char(1),
.....
)')
select * from ##tmpTabledrop table ##tmpTable
declare @create_sql varchar(800)
set @TableName='#tmpTable'
set @create_sql = 'create table ' + rtrim(@TableName) + '(field1 char(1),...)'
Exec(@create_sql)
select @TableName='##tmpTable'
select @sql='create table'+ ' '+ @TableName+'(field1 char(1))'
print @sql
exec sp_executesql @sql
局部临时表,不可以创建,你用全局临时表吧
要不你创建物理表也可以