zoukankan      html  css  js  c++  java
  • 局部临时表

      局部临时表有两个特点,一是表名以'#'号作为前缀,二是它只对创建它的会话在创建级和调用堆栈内部级(包括内部的过程,函数,触发器和动态批处理)可见。局部临时表的应用场景是,当需要把中间结果临时保存起来,以便供以后查询这些临时数据的时候使用。下面是创建局部临时表的示例代码。

    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.#MyOrderTotalsByYear
    FROM Sales.Orders AS orders
    LEFT JOIN Sales.OrderDetails AS orderDetails ON orders.orderid = orderDetails.orderid
    GROUP BY YEAR(orders.orderdate);
    
    -- 在当前会话中,从局部临时表中查询数据
    SELECT * FROM dbo.#MyOrderTotalsByYear;

    查询结果:

    为了演示局部临时表对其它会话不可见,我现在新开一个查询窗口,然后用同样的查询语句去查,看会有什么样的结果?

    USE tempdb;
    GO
    
    -- 新打开一个查询窗口
    SELECT * FROM dbo.#MyOrderTotalsByYear;

    这时程序报错了,错误消息如下图。

    这表明局部临时表的确只对当前会话可见。

  • 相关阅读:
    MySQL常用函数
    MDK关于microlib库问题笔记
    STM32F407ADC多通道+定时器触发+DMA模式设置
    12864LCD学习笔记
    转载:有趣的uC/OS-View
    怎样下载专利文件(特别是中英文对照的专利文件)
    FPGA学习之按键去抖
    数据采样与处理算法
    FTU几种保护逻辑研究
    2016第一篇之AD7606调试
  • 原文地址:https://www.cnblogs.com/mcgrady/p/3981694.html
Copyright © 2011-2022 走看看