SQL 2008 存储过程 临时表如何清空呢!

13abyKnight 2013-04-09 04:05:10
CREATE procedure [dbo].[getTableRecord]
as
--清空数据
truncate table FirewallLog
--定义临时表存储表名
declare @tables table(name varchar(50))
--数据库名称
declare @databaseName varchar(200)
--数据库所对应的表名
declare @tbName varchar(200)

declare cursor_database cursor for
select
'ldy.'+data.name
from ldy.master.sys.databases data
where Convert(varchar(100),create_date,23)=CONVERT(varchar(90), GETDATE(), 23)
and SUBSTRING(data.name,17,3) ='FWS'
order by [name]

open cursor_database

fetch next from cursor_database into @databaseName

while @@fetch_status=0

begin
insert into @tables

exec('select ''dbo.''+name from '+@databaseName+'.sys.tables')

declare cursor_tb cursor for

select name from @tables order by [name]

open cursor_tb

fetch next from cursor_tb into @tbName

while @@fetch_status=0
begin

insert into FirewallLog

exec('select * from '+@databaseName+'.'+@tbName+'')

fetch next from cursor_tb into @tbName

end
close cursor_tb

deallocate cursor_tb

fetch next from cursor_database into @databaseName

end

close cursor_database

deallocate cursor_database

[/code]
...全文
531 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻狂小疯 2013-04-12
  • 打赏
  • 举报
回复
存储过程里面的临时表根本就不需要清空的,在执行完存储过程之后,会自动清空, 当然临时表清空办法很简单啊 清空数据 truncate table #AA 清空临时表#AA 里面的数据 删除临时表 drop table #AA
昵称被占用了 2013-04-10
  • 打赏
  • 举报
回复
DELETE @tbName
luxinkui 2013-04-10
  • 打赏
  • 举报
回复
trancate
13abyKnight 2013-04-10
  • 打赏
  • 举报
回复
谢谢,大家的积极参与。 问题来源于生成的临时表中数据没有及时的清楚上一次所存放的数据导致循环遍历中执行两次。 感谢大家,帮助。
zclxyh 2013-04-10
  • 打赏
  • 举报
回复
exec('insert into FirewallLog select * from '+@databaseName+'.'+@tbName+'')
Mr_Nice 2013-04-09
  • 打赏
  • 举报
回复
exec('use @databasename ; select ''dbo.''+name from sys.tables')
try
13abyKnight 2013-04-09
  • 打赏
  • 举报
回复
我的着个存储过程是动态读取数据库名称,根据数据库名称获得表名,得到表名以后插入中间表。 但是,不知道为什么? 循环第二次数据库的时连续执行两次,难道是临时表数据没有清空的缘故吗?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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