首页 > 代码库 > 局部临时表
局部临时表
局部临时表有两个特点,一是表名以‘#‘号作为前缀,二是它只对创建它的会话在创建级和调用堆栈内部级(包括内部的过程,函数,触发器和动态批处理)可见。局部临时表的应用场景是,当需要把中间结果临时保存起来,以便供以后查询这些临时数据的时候使用。下面是创建局部临时表的示例代码。
USE TSQLFundamentals2008;GO-- 局部临时表IF OBJECT_ID(‘tempdb.dbo.#MyOrderTotalsByYear‘,‘U‘) IS NOT NULL DROP TABLE dbo.#MyOrderTotalsByYear;GO-- 创建局部临时表SELECT YEAR(orders.orderdate) AS orderyear,SUM(orderDetails.qty) AS qty INTO dbo.#MyOrderTotalsByYearFROM Sales.Orders AS ordersLEFT JOIN Sales.OrderDetails AS orderDetails ON orders.orderid = orderDetails.orderidGROUP BY YEAR(orders.orderdate);-- 在当前会话中,从局部临时表中查询数据SELECT * FROM dbo.#MyOrderTotalsByYear;
查询结果:
为了演示局部临时表对其它会话不可见,我现在新开一个查询窗口,然后用同样的查询语句去查,看会有什么样的结果?
USE tempdb;GO-- 新打开一个查询窗口SELECT * FROM dbo.#MyOrderTotalsByYear;
这时程序报错了,错误消息如下图。
这表明局部临时表的确只对当前会话可见。
局部临时表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。