临时表的写法问题

ayun00 2006-09-04 04:17:08
我的存取过程如下

DECLARE @re TABLE (id int, LEVEL int)
DECLARE @l int,@id int, @r varchar(8000)
declare @strSQL varchar(1000)

set @strSQL='INSERT INTO ' +@re+ ' SELECT id, '+ @l +' FROM protype WHERE parentID =' + @id

exec (@strSQL)


执行的时候 老是报 " 必须声明变量 '@re'。" 的错误


...全文
265 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyangxie 2006-09-04
  • 打赏
  • 举报
回复
呵呵
hellowork 2006-09-04
  • 打赏
  • 举报
回复
set @strSQL='
DECLARE @re TABLE (id int, LEVEL int) /*把表变量@re的声明放到EXEC中进行*/
INSERT INTO @re SELECT id, '+ rtrim(@l) +' FROM protype WHERE parentID =' + rtrim(@id)

exec (@strSQL)

这样处理之后@re在执行了exec (@strSQL)之后就不复存在了.如果楼主希望exec (@strSQL)之后能够访问临时表,请使用#局部临时表或##全局临时表.例如:
create table #re(id int, LEVEL int) /*创建局部临时表*/
DECLARE @l int,@id int, @r varchar(8000)
declare @strSQL varchar(1000)

set @strSQL='
INSERT INTO #re SELECT id, '+ rtrim(@l) +' FROM protype WHERE parentID =' + rtrim(@id)

exec (@strSQL)
----查看临时表
select * from #re
----删除临时表
drop table #re
kk19840210 2006-09-04
  • 打赏
  • 举报
回复
DECLARE @re varchar(10)--表名
DECLARE @l int,@id int, @r varchar(8000)
declare @strSQL varchar(1000)

set @strSQL='INSERT INTO ' +@re+ ' SELECT id, '+ @l +' FROM protype WHERE parentID =' + @id

exec (@strSQL)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧