临时表在存储过程之间的作用域

存储过程中的临时表#table在编程中比较常见,今天在排查一处错误时,发现了一个细节规则,如下:

问题背景:存储过程A,其调用一个子存储过程B。

1.父存储过程声明临时表#a:

在声明的语句之后,调用其子存储过程B过程中,B的内容是直接可以完全访问临时表#a的,因为存储过程A还在执行,没有结束。但如果声明的语句在调用的子存储过程B之后,那么存储过程B是无法访问到临时表#a的。

2.在子存储B中声明临时表#a:

在父存储过程的任何地方都无法访问子存储过程B中声明的临时表#a,因为临时表#a只存在于存储过程B的执行会话中,所以在调用存储过程B之前访问临时表#a,由于还没有开始会话,所以临时表还未创建,因为无法访问,在调用存储过程B之后,由于会话已经结束,因此也无法访问。总之,在父存储过程中无法访问子存储过程声明的临时表。

总结:只有先在父存储过程声明临时表,之后才可以在子存储过程进行访问临时表,除此之外,父子存储过程之间的临时表都无法互访。

 

posted @ 2023-07-14 21:43  Shapley  阅读(63)  评论(0编辑  收藏  举报