本地临时表 和 全局临时表

缘起

     在写sp 的过程中, 发现用动态语句不能生成本地临时表, 数据库总报 “对象名 '#tmp_show' 无效” 的错误,真是百思不得其解。

 

     yiyi 非常郁闷, 开始在 csdn 上找帖子, 有类似问题的答复中, 有人说把表名变成 “##” 开头就能解决问题。 是这样么?  回去yiyi就把#tmp_show 全部替换成 ##tmp_show, 测试通过。 so why ??  求助 google 大神吧。。。

 

求解

 有人说:

临时对象都以#或##为前缀,临时表是临时对象的一种,还有例如临时存储过程、临时函数之类的临时对象,临时对象都存储在tempdb中。以#前缀的临时 表为本地的,因此只有在当前用户会话中才可以访问,而##前缀的临时表是全局的,因此所有用户会话都可以访问。临时表以会话为边界,只要创建临时表的会话 没有结束,临时表就会持续存在,当然用户在会话中可以通过DROP TABLE命令提前销毁临时表。

 

在执行动态语句时, 已经是另起一个连接,所以不能访问本地临时表,必须用全局临时表代替之。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值