您的位置:程序门 -> web 开发 -> asp



如何在asp中调用存储过程中的临时表?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何在asp中调用存储过程中的临时表?
发表于:2008-01-18 10:49:21 楼主
alter         procedure   p_sale_hz
@bdate   datetime,
@edate   datetime,
@customerid   varchar(20)
as
select     convert(varchar(12),   approvaldate,   111)approvaldate,sum(quantsales)   sl,sum(quantsales*salesprice)   je   into   #tmp   from   t_sales
where   approvaldate   between   @bdate   and   @edate   and   customerid=@customerid  
group   by   approvaldate   having   sum(quantsales)> 0   order   by   approvaldate
select   *   from   #tmp
union
select   '合计'   approvaldate,sum(sl)   sl,sum(je)   je   from   #tmp  
发表于:2008-01-22 16:47:421楼 得分:0
asp无法调用在存储过程中生成的临时表   因为这样的临时表在存储过程执行就就清除了   你可以写在存储过程中进行处理
发表于:2008-01-22 16:48:482楼 得分:0
另外一个方法是在存储过程中不使用临时表   使用物理临时表   生成之前先判断是否存在如果存在就删除或者truncate
发表于:2008-01-22 17:30:433楼 得分:0
#table_name本地临时表仅在当前会话中可见
##table_name全局临时表在所有会话中都可见
系统自带的tempdb数据库是用来存放临时表用的。

除非使用   drop   table   语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:  

当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。


所有其它本地临时表在当前会话结束时自动除去。


全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个   transact-sql   语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的   transact-sql   语句完成后,将自动除去此表。


快速检索

最新资讯
热门点击