存储变量发生作用的范围有多广?
变量作用域,也就是变量发生作用的范围。会话变量,存在于客户端的当次会话中,当客户端关闭时,此变量也就消失,因此会话变量的作用域为单个客户端整个会话。存储过程变量为数据库服务器上的变量,存储在服务器中,但其作用域并不能认为是整个数据库服务器。
存储过程变量作用域的认定按下面三个步骤进行:((1)从变量所在位置开始,往上回溯,从最靠近变量的第一个begin开始。
(2)往下延伸,找到与上面begin匹配的end结束。
(3)内部变量比外部变量在其作用域范围内享有更高的优先权。
下面举例说明存储过程变量作用域的范围,在这个存储过程案例中可以看到:((1)第4行代码声明了一个存储过程变量“x1”,其作用域为第3行代码的begin开始,到第10行代码的end结束,此变量值为“outer”。
(2)第6行代码声明了另一个存储过程变量“x1”,其作用域为第5行代码的begin开始,到第8行代码的end结束,此变量值为“inner”。
(3)第4行代码声明的“x1”为外部变量,第6行代码声明的“x1”为内部变量,在第7行代码中,取得的“x1”应为内部变量的值,即取得“inner”值,因内部变量的优先级比外部变量的优先级高;在第9行代码中,取得的“x1”应为外部变量的值,即取得“outer”值。如下图表
变量表
2023-08-15 广告