Sql Server临时表和游标的使用小结

发布时间 - 2026-01-11 01:11:15    点击率:

1.临时表

临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。
临时表有局部和全局两种类型

2者比较:

局部临时表的名称以符号 (#) 打头
仅对当前的用户连接是可见的
当用户实例断开连接时被自动删除
全局临时表的名称以符号 (##) 打头
任何用户都是可见的
当所有引用该表的用户断开连接时被自动删除
实际上局部临时表在tempdb中是有唯一名称的
例如我们用sa登陆一个查询分析器,再用sa登陆另一查询分析器

在2个查询分析器我们都允许下面的语句:

use pubs
go
select * into #tem from jobs

分别为2个用户创建了2个局部临时表
我们可以从下面的查询语句可以看到

SELECT * FROM [tempdb].[dbo].[sysobjects] 
where xtype='u' 

判断临时表的存在性:

if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end 

特别提示:
1。在动态sql语句中创建的局部临时表,在语句运行完毕后就自动删除了
所以下面的语句是得不到结果集的

exec('select * into #tems from jobs')
select * from #tems

2。在存储过程中用到的临时表在过程运行完毕后会自动删除
但是推荐显式删除,这样有利于系统

ii。游标
游标也有局部和全局两种类型
局部游标:只在声明阶段使用
全局游标:可以在声明它们的过程,触发器外部使用

判断存在性:

if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end
SELECT * FROM [tempdb].[dbo].[sysobjects] where xtype='u' 

判断临时表的存在性:

if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end 

特别提示:
1。在动态sql语句中创建的局部临时表,在语句运行完毕后就自动删除了
所以下面的语句是得不到结果集的

exec('select * into #tems from jobs')
select * from #tems

2。在存储过程中用到的临时表在过程运行完毕后会自动删除
但是推荐显式删除,这样有利于系统

ii。游标
游标也有局部和全局两种类型
局部游标:只在声明阶段使用
全局游标:可以在声明它们的过程,触发器外部使用

判断存在性:

if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end
SELECT * FROM [tempdb].[dbo].[sysobjects] where xtype='u' 

判断临时表的存在性:

if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end 

特别提示:
1。在动态sql语句中创建的局部临时表,在语句运行完毕后就自动删除了
所以下面的语句是得不到结果集的

exec('select * into #tems from jobs')
select * from #tems

2。在存储过程中用到的临时表在过程运行完毕后会自动删除
但是推荐显式删除,这样有利于系统

ii。游标
游标也有局部和全局两种类型
局部游标:只在声明阶段使用
全局游标:可以在声明它们的过程,触发器外部使用

判断存在性:

if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end


# Sql  # Server  # 临时表  # 游标  # SQL Server中使用表变量和临时表  # MySQL内部临时表的具体使用  # MySQL中临时表的基本创建与使用教程  # sql的临时表使用小结  # MySQL中关于临时表的一些基本使用方法  # 关于sqlserver 2005 使用临时表的问题( Invalid object name #te  # SQLSERVER 临时表和表变量的区别汇总  # sql语句中临时表使用实例详解  # 也有  # 只在  # 两种类型  # 过程中  # 后会自动  # 完毕后  # 都是  # 是有  # 我们可以  # 可以看到  # 分别为  # 再用  # 仅对  # brush  # select  # pubs 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS7上新建站点并设置安全权限?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何为不同团队 ID 动态生成多个非值班状态按钮  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  高端建站三要素:定制模板、企业官网与响应式设计优化  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Swift开发中switch语句值绑定模式  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Android使用GridView实现日历的简单功能  C++用Dijkstra(迪杰斯特拉)算法求最短路径  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  利用JavaScript实现拖拽改变元素大小  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何在阿里云虚拟主机上快速搭建个人网站?  ,交易猫的商品怎么发布到网站上去?  php 三元运算符实例详细介绍  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel怎么上传文件_Laravel图片上传及存储配置  历史网站制作软件,华为如何找回被删除的网站?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在橙子建站上传落地页?操作指南详解  如何快速打造个性化非模板自助建站?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  如何用y主机助手快速搭建网站?  Python文件异常处理策略_健壮性说明【指导】  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在云主机上快速搭建网站?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何在Windows环境下新建FTP站点并设置权限?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何正确下载安装西数主机建站助手?  如何为不同团队 ID 动态生成多个独立按钮