SQLServer临时表和游标的使用摘要
1。临时表临时表是类似于永久表,但临时表存储在tempdb和自动删除,当它不再被使用。
两种类型的临时表是本地的和全局的。
2者比较。
签本地临时表的名称(#)
仅对当前用户连接可见。
连接断开时,用户实例将自动删除。
签一个全局临时表的名称(# #)
任何用户都可见
当引用表断开的所有用户断开时,它将自动删除。
In fact, the local temporary table has a unique name in tempdb
例如,我们使用SA登录一个查询分析器,并使用SA登录到另一个查询分析器。
在2个查询分析器中,我们都允许以下语句:
使用酒吧
SELECT *为# TEM工作
分别为2个用户创建了2个本地临时表。
我们可以从下面的查询中看到
SELECT * FROM { tempdb }。{ } { }中dbo。
哪里的xtype = U
确定临时表的存在:
如果object_id('tempdb .. # TEM)是无效的
开始
print'exists
终点
其他的
开始
print'not存在
终点
特别提示:
1、语句完成后,动态SQL语句中创建的本地临时表将自动删除。
所以下面的语句没有得到结果集
exec(从工作‘*为# TEMS)
SELECT * FROM # TEMS
2、存储过程中使用的临时表在进程完成后自动删除。
但是推荐显式删除,这对系统是有益的。
ii.cursor
游标还具有本地和全局两种类型。
本地游标:仅在声明阶段使用
全局游标:可用于声明其进程、外部使用触发器。
存在判断:
如果cursor_status(全球、游标)= 3和cursor_status(乡土、游标)= 3
开始
print'not存在
终点
SELECT * FROM { tempdb }。{ } { }在sysobjects dbo。xtype = U
确定临时表的存在:
如果object_id('tempdb .. # TEM)是无效的
开始
print'exists
终点
其他的
开始
print'not存在
终点
特别提示:
1、语句完成后,动态SQL语句中创建的本地临时表将自动删除。
所以下面的语句没有得到结果集
exec(从工作‘*为# TEMS)
SELECT * FROM # TEMS
2、存储过程中使用的临时表在进程完成后自动删除。
但是推荐显式删除,这对系统是有益的。
ii.cursor
游标还具有本地和全局两种类型。
本地游标:仅在声明阶段使用
全局游标:可用于声明其进程、外部使用触发器。
存在判断:
如果cursor_status(全球、游标)= 3和cursor_status(乡土、游标)= 3
开始
print'not存在
终点
SELECT * FROM { tempdb }。{ } { }在sysobjects dbo。xtype = U
确定临时表的存在:
如果object_id('tempdb .. # TEM)是无效的
开始
print'exists
终点
其他的
开始
print'not存在
终点
特别提示:
1、语句完成后,动态SQL语句中创建的本地临时表将自动删除。
所以下面的语句没有得到结果集
exec(从工作‘*为# TEMS)
SELECT * FROM # TEMS
2、存储过程中使用的临时表在进程完成后自动删除。
但是推荐显式删除,这对系统是有益的。
ii.cursor
游标还具有本地和全局两种类型。
本地游标:仅在声明阶段使用
全局游标:可用于声明其进程、外部使用触发器。
存在判断:
如果cursor_status(全球、游标)= 3和cursor_status(乡土、游标)= 3
开始
print'not存在
终点