SqlServer 临时表

在数据库操作中,前缀如 ##, #, 和 @ 常用于区分不同类型的表或变量。以下是每个前缀的具体含义和用法:

##TBL_RZBS:

全局临时表:以 ## 开头的表是一种全局临时表。全局临时表在创建之后,对于所有会话都是可见的,并且只有在所有会话都断开连接后才会被自动删除。
作用范围:在同一实例中的所有会话中都可以访问。
生命周期:当所有打开它的会话关闭时,这个表才会从数据库中删除。
#TBL_RZBS:

本地临时表:以 # 开头的表是一种本地临时表。它在创建它的会话中是唯一的,并且在创建它的会话结束后会被自动删除。
作用范围:只在创建它的会话中可以访问。
生命周期:当创建它的会话关闭时,这个表就会被自动删除。
@TBL_RZBS:

变量:以 @ 开头的是变量,而不是表。它们通常用于存储单个值或某些临时数据,可以是标量变量(例如整数、字符串)或表变量(用于存储类似于表格结构的数据,但作用范围更有限)。
作用范围:在声明它的批处理、存储过程中是可见的。
生命周期:在声明它的批处理或存储过程结束时,它们就会被销毁。
总结
##TBL_RZBS:全局临时表,跨会话可见,仅在所有会话结束后删除。
#TBL_RZBS:本地临时表,仅在创建会话中可见,会话结束后删除。
@TBL_RZBS:变量,用于存储单个值或表格数据,在声明的范围内有效,批处理或存储过程结束后销毁。

OBJECT_ID 是 SQL Server 中的一个内置函数,用于返回数据库对象的对象 ID。这个函数通常用于检查数据库中对象(如表、视图、存储过程等)是否存在。

OBJECT_ID 函数的基本语法
sql
OBJECT_ID ( ‘object_name’ [, ‘object_type’ ] )
object_name:对象的名称,可以包括数据库名称和架构名称。
object_type:对象的类型,例如 ‘U’ 表示用户表,‘V’ 表示视图,等等。这个参数是可选的,但提供它可以提高查询的准确性。

常见的 object_type 值
‘U’:用户表
‘V’:视图
‘P’:存储过程
‘FN’:标量函数

示例:检查表是否存在并删除
假设我们有一个本地临时表 #TBL_EXP,我们希望在确保它存在的情况下将其删除。以下是实现该逻辑的代码:

sql

IF OBJECT_ID('tempdb..#TBL_EXP', 'U') IS NOT NULL
BEGIN
    DROP TABLE #TBL_EXP;
END
详细解释
OBJECT_ID('tempdb..#TBL_EXP', 'U')

tempdb…#TBL_EXP:在 SQL Server 中,本地临时表存储在 tempdb 数据库中,所以你需要指定 tempdb 数据库。
‘U’:表示你正在寻找一个用户表。
IS NOT NULL:

如果 OBJECT_ID 返回的结果不是 NULL,则说明该对象存在。
BEGIN … END 块:

如果条件成立(即表存在),则执行 DROP TABLE #TBL_EXP 语句将其删除。
使用 OBJECT_ID 函数的其他示例
检查并删除用户表

sql
IF OBJECT_ID('dbo.MyTable', 'U') IS NOT NULL
BEGIN
    DROP TABLE dbo.MyTable;
END

检查并删除视图

sql
IF OBJECT_ID('dbo.MyView', 'V') IS NOT NULL
BEGIN
    DROP VIEW dbo.MyView;
END

检查并删除存储过程

sql
IF OBJECT_ID('dbo.MyProcedure', 'P') IS NOT NULL
BEGIN
    DROP PROCEDURE dbo.MyProcedure;
END
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值