zoukankan      html  css  js  c++  java
  • PL/SQL变量的作用域和可见性

      变量的作用域和可见性设计变量在块中的位置,不同的位置使得变量具有不同的有效性与可访问性。

      变量的作用域是指可以使用变量的程序单元部分,可以是包和子程序包等。

    当一个变量在它的作用域中可以用一个不限定的名字来引用时,就称之为可见性。一般标识符在他的作用域内部是可见的。

      在PL/SQL块或子程序中定义的变量仅在本地可用,如果在块之外访问变量是非法的,这种变量称之为本地变量。当变量超出其作用域是,变量使用的内存将会被释放,直到变量被从新定义并初始化。

      PL/SQL变量的作用域和可见性在嵌套块中时,需要特别注意变量的作用域与可见性问题,如果PL/SQL块中包含嵌套的子块,那么在外部块中定义的变量对于子块来说是全局的,如果全局变量在子块中又被从新声明,那么全局变量和本地声明的变量在子块的作用域都是存在的,想要访问外部的全局变量需要使用限定修饰符。

    例如:

    <<outer>>

    DECLARE

      v_empname varchar2(20);        --定义外层快变量

      BEGIN

      v_empname:='张三';       --为外层外的变量赋初值

      <<inner>>

      DECLARE

        v_empname VARCHAR2(20);    --定义与外层块同名的内层块变量

      BEGIN

      v-emp_name:='李四';                         --为内层块变量赋值

      --输出内层块的变量

      DBMS_OUTPUT.put_line('内层块的员工名称:'||v_empname);

      --在内层块中访问外层块的变量

      DBMS_OUTPUT.put_line('外层块的员工名称'||outer.v_empname);

    EDN;

    DBMS_OUTPUT.put_line('outer员工名称'||v_empname);     --在外层块中访问变量

    END;

    代码中定义了一个命名的块outer,在outer内部有嵌套了一个Inner块,这两个块都定义了v_empname变量。

    注:如果子块中从新声明了变量,本地变量优先权将高于全局变量。外层块无法对内层块的变量访问。

  • 相关阅读:
    详解学习C#的方法和步骤
    将今天写进历史,即可得出现在的世界是数字的
    60秒,我们可以干什么?
    《每个人都会死,但我总以为自己不会》让我直面死亡
    介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
    十一阅读攻略:和土豪做朋友,告别穷屌丝,迎接高富帅,成功逆袭!
    超低成本----音视频通讯+共享屏幕+电子白板
    Hbase split的三种方式和split的过程
    分布式数据库 HBase
    Sqoop-1.4.6.bin__hadoop-2.0.4-alpha 环境搭建
  • 原文地址:https://www.cnblogs.com/harriets-zhang/p/10783769.html
Copyright © 2011-2022 走看看