SQL临时表的创建及使用

在sql的使用中我们常常会使用到临时表,#表示局部临时表,##表示全局临时表,因为他的方便、快捷让我们情不自已爱不释手。

但是今天我才注意到,其实创建一个临时表后,在数据库中临时表的name不是我们创建的那个。

例如:

CREATE TABLE #TB1
(
ProductEntityID VARCHAR(32)
)

那么他在sql中的name是#TB1________________________________________________________________________________________________________________000000000017

SQL会自动在我们创建的临时表的名称后加下划线及数字 用于区别是什么时候哪个链接中创建的,那么我们再写sql判断临时表是否存在的时候就不能这样写:

select name,* from tempdb.dbo.sysobjects  where name='#tb1'

因为会找不到;也不能这样写select name,* from tempdb.dbo.sysobjects  where name LIKE '%#tb1%'

因为你可能会把其他人的临时表误操作,风险是极大的。

正确的写法是:

select name,* from tempdb.dbo.sysobjects  where id=object_id('tempdb..#TB1')

ok,找打了;

 

if ((select COUNT(*) from tempdb.dbo.sysobjects where id=object_id('tempdb..#TB1'))=0)
CREATE TABLE #TB1
(
ProductEntityID VARCHAR(32)
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值