PL/SQL变量声明、使用、作用域讲解实例

使用plsqldev打开测试窗口,输入如下:

-- Created on 2018/3/21 by E.WANG 
declare 
  /*
  全局变量
  初始化变量
  */
  userName char(10) default 'ewang';
  age int:=33;
  address varchar2(50);
begin
  -- Test statements here
  address:='shang hai pudong';
  dbms_output.put_line('-----------------alter before--------------------' );
  dbms_output.put_line('user name:' || userName);
  dbms_output.put_line('user age:' || age);
  dbms_output.put_line('user address:' || address);
  
  
  declare
       englishName char(10);
       sex varchar(6);
       mount decimal;
  begin
       --修改全局变量的值
       userName:='wang shang';
       age:=18;
       --给局部变量赋值
       englishName:='ewang';
       sex:='male';
       mount:=6523.56;
       dbms_output.put_line('-----------------alter after(local)--------------------' );
       dbms_output.put_line('user name:' || userName);
       dbms_output.put_line('user sex:' || sex);
       dbms_output.put_line('user age:' || age);
       dbms_output.put_line('user englishName:' || englishName);
       dbms_output.put_line('user mount:' || mount);
       dbms_output.put_line('user address:' || address);
  end;
  --修改全局变量的值
  userName:='wang ning';
  age:=14;
  /*
  --给局部变量赋值
  englishName:='sunny';
  sex:='female';
  mount:=6666.66;
  */
 dbms_output.put_line('-----------------alter after(global)--------------------' );
 dbms_output.put_line('user name:' || userName);
 --dbms_output.put_line('user sex:' || sex);
 dbms_output.put_line('user age:' || age);
 --dbms_output.put_line('user englishName:' || englishName);
 --dbms_output.put_line('user mount:' || mount);
 dbms_output.put_line('user address:' || address);
  
end;

给出部分代码截图:

PL/SQL变量声明、使用、作用域讲解实例_第1张图片

在没有注释掉上图那部分代码,运行会弹出如下错误:

PL/SQL变量声明、使用、作用域讲解实例_第2张图片

注释掉之后,运行截图:

PL/SQL变量声明、使用、作用域讲解实例_第3张图片


总结:

begin中嵌套的那部分变量声明,作用域就是在变量声明的那个begin中有效,而在最外部的声明在整个部分都有效!

你可能感兴趣的:(数据库知识库)