局部临时表

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

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;

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

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

时间: 2024-10-12 05:53:00

局部临时表的相关文章

SQL Server 中本地(局部)临时表

一个SSMS查询窗口就是一个会话 通过本地临时表验证: 本地临时表仅在当前会话中可见:全局临时表在所有会话中都可见.本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name). 打开一个查询窗口,新建本地临时表,插入数据,并查询 create table #temptable (id int identity(1,1) primary key, name nvarchar(10) null); go insert into #t

在SSIS中的不同组件间使用局部临时表

Connetion的属性RetainSameConnection是个boolean值,指定是否保持相同的链接,默认值是false,表示每个component都会单独的使用connection,在component开始时打开connection,在component结束时关闭connection.不同的componet之间使用的是不同的connection. 由于局部临时表的生命周期是在当前连接,在链接关闭时就会终止,临时表就不存在了.在SSIS中不同组件间使用临时表,需要设置Connetion的

数据库——创建局部临时表和全局临时表

局部临时表与全局临时表区别与示例: 1.局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除. 2.全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除. 3.不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表. --create table #temp(num int primary key,pname varchar(20))//创建局部临时表,只对当前连接

[转]表变量和临时表的比较

本文转自;http://www.cnblogs.com/CareySon/archive/2012/06/11/TableVariableAndTempTable.html 关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑.虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的.在本篇文章中,我们将探索表变量和临时表是什么(以及不是什么),然后我们通过使用临时表和表变量对其解密. 表变量 表变量在SQL Server 2000中首次被引入,那么,什么是表变量呢?

InMemory:在内存中创建临时表和表变量

在Disk-Base数据库中,如果系统频繁地创建和更新临时表,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL Server 2016的内存(Memory-Optimized)数据库中,如果考虑使用内存优化结构来存储临时表,表变量,表值参数的数据,那么将完全消除IO操作的负载消耗,发挥大内存的优势,大幅提高数据库的性能. 在SQL Server 2016中,能够直接创建内存优化的表类型,表变量和表值参数的数据只存储在内存中:不能直接在内存中创建临时表,但是,SQ

判断临时表是否存在,存在则删除

判断临时表是否存在,存在则删除! 如果按照实体表那样话,是不行的,是删除不了的,临时表存在于tempdb数据库中,所以必须指定数据库. tempdb数据库的作用 显示创建的临时用户对象,例如全局或局部临时表.临时存储过程.表变量或游标. 下面是删除临时表后重建临时表的脚本 -- ============================================= -- Author: <奔跑的金鱼> -- Blog: <http://www.cnblogs.com/OliverQi

SqlServer临时表

临时表的使用 什么是临时表 临时表分为两种:本地和全局临时表.本地临时表仅在当前会话中可见:全局临时表在所有会话中都可见. 本地临时表的名称前面有一个编号符 #table_name,而全局临时表的名称前面有两个编号符 ##table_name. 临时表的使用场景 数据二次过滤 数据库中表创建完成之后,对于复杂的查询,可以引入临时表,将数据插入到临时表,然后从临时表查询数据. 在数据库层面缓存数据 建经常使用的数据,插入到临时表,作为缓存使用. 语法 创建临时表 方法一: create table

sql复制表、拷贝表、临时表

--insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在) --select * into pppCopy1 from ppp //将ppp中的数据拷贝到 pppcopy1中,拷贝表的数据以及表的结构(前提:表pppcopy1不存在) --select * into pppCopy2 from ppp where 1=0// 将ppp的表结构拷贝到pppco

SQL学习笔记——临时表不同创建方式的区别

问题:在存储过程中使用临时表时,不Create临时表就会报错. 分析了下,总结了临时表创建方式的区别. 创建临时表有两种方法: 方法一 create  table  #临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) create  table  ##临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) 方法二 select  *  into  #临时表名  from 你的表;   select  *  into  ##临时表名