本地临时表 和 全局临时表

sql server 专栏收录该内容
9 篇文章 0 订阅

缘起

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

 

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

 

求解

 有人说:

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

 

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

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值