读书人

创设临时表的困惑

发布时间: 2012-09-08 10:48:07 作者: rapoo

创建临时表的困惑
小弟目前有个问题 要用SQL临时才能解决

就是我要设计一个在前端给予这个临时表命名的表名后

再对这个表进行查询的一些作业

我试着写下以下的代码:



SQL code
create proc 新增谓词表(@user varchar(20))as create table #@user谓词表(id int,Property nvarchar(100),Propertyvalue nvarchar(200),defaultelement nvarchar(200))godeclare @user varchar(20)set @user='我是'exec 新增谓词表 @user


之后查询这个表

select * from #我是谓词表

select * from #@user谓词表

我下搜寻这个表的命令 都找不到这个表 请问这里该如何编写才能得到我的需求呢?


[解决办法]
探讨
我不小心把declare @sql varchar(200) 改成了 @sql varchar(20)
我改回来之后 重新编译 创造正常的表是可以的 但似乎不能创造临时表
我要的功能是要能创造临时表
这边我直接改写成

SQL code

declare @sql varchar(200)
set @sql='create table #'+@user+N'谓词表(id int,……

[解决办法]
临时表不能这样用。

临时表有作用于范围,在存储过程中创建的临时表,只能在存储过程内部使用,再调用存储过程的地方是看不到里面创建的临时表的。
就像一个函数内的局部变量一样,再这个函数外是不能访问的。

你可以用全局临时表,表名用 ##我是谓词表

把你的代码中的 # 改成 ##

读书人网 >SQL Server

热点推荐