• 1.1 变量


        首先对于新手来讲要开始一段学习旅程,要从认识变量开始。变量就是可以操纵的数据元素。

      

    1.constant 表示声明为一个常量,常量在定义时需要指定初始值,一旦定义其值,不能再被改变。
    2.not null 用于约束变量的值不能为空。
    3. :=用于为变量赋初始值。
    
    declare
       v_empname  varchar2(20);-- 定义员工名称变量
       v_deptname varchar2(20); --定义部门名称变量
       v_hiredate date  not null :=syadate; -- 定义入职日期变量
       v_empno int    not null default 7369; -- 变量员工编码变量,如果不赋值默认值7369
    begin
        null;
    end;
    4. %type 来声明与数据库列相同的类型。
    declare
       v_empno emp.empno%type;        --声明一个与数据库emp表的empno同样类型的变量
       v_ename emp.ename%type;        -- 声明一个与数据库emp表的ename 同样类型的变量
       v_hiredate emp.hiredate%type;
    begin
       select empno,ename,hiredate
          into v_empno,v_ename,v_hiredate
        from emp
      where empno=&empno;
    --输出变量内容
    dbms_output.put_line('员工编号:'|| v_empno);
    dbms_output.put_line('员工名称:'||v_ename);
    dbms_output.put_line('雇佣日期:'||v_hiredate);
    end;
    5. %rowtype 定义一个包含目标表所有类型的变量类型
    declare
       v_empno emp%rowtype;-- 定义emp表的所有列数据
    begin
        select * --查询emp表并将结果写入v_emp记录中
          into v_emp
          from emp
         where empno=&empno;
         --输出结果信息
         dbms_output.put_line(v_emp.empno||chr(10)||v_emp.ename);
    end;
    6.%rowtype 同%type一样,只提供类型信息,并不能保证not null 约束
    declare
       v_emp emp%rowtype;      -- 定义emp表列类型的记录
    begin
         v_emp.empno:=800;       -- 为记录类型赋值
         v_emp.ename:='张三丰';
         v_emp.job:='掌门';
         v_emp.mgr:='7902';
         v_emp.hiredate:=date'2010-12-13';
         v_emp.sal:=8000;
         v_emp.deptno:=20;
         insert into emp values v_emp;  -- 将记录类型插入数据表
    end;
    7. %rowtype定义游标类型的变量
    declare
       cursor emp_cursor
       is
       select empno,ename,job,sal,hiredate
         from emp;
      --使用%rowtype定义游标类型的变量
      v_emp emp_cursor%rowtype;
      begin
          open emp_cursor;
          --循环并提取游标数据
          loop
             fetch emp_cursor
              into v_emp;
          -- 要注意游标移动到尾部退出游标
          exit when emp_cursor%notfound;
          -- 输出游标数据
          dbms_output.put_line(v_emp.empno
                              ||''
                              ||v_emp.ename
                              ||''
                              ||v_emp.job
                              ||''
                              ||v_emp.sal
                              ||''
                              || to_char(v_emp.hiredate,'YYYY-MM-DD')
                              );
      end loop;
      --关闭游标
      close emp_cursor;
    end;
    8. 变量的作用域
    <outer>>
    declare
       v_empname varchar2(20); -- 定义外层块变量
    begin
         v_enpname:='张三';-- 为外层外的变量赋初始值
         <<inner>>
         declare
            v_empname varchar2(20);-- 定义与外层块同名的内层块的变量
         begin
              v_empname:='李四';  --为外层块变量赋值
              --输出内层块的变量
              dbms-output.put_line('内层块的员工名称:'||v_empname);
              -- 内层块中访问外层块的变量
              dbms_output.put_line('外层块的员工名称:'||outer.v_empname);
          end;
          dbms_output.put_line('out员工名称:'||v_empname);--在外层块中访问变量
    end;
    输出为:
    内层块的员工名称:李四
    外层块的员工名称:张三
    out员工名称:张三
  • 相关阅读:
    解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14&#39; not found (required by ...)
    【环境配置】配置sdk
    Eclipse设置Android Logcat输出字体大小
    Vertica数据库操作
    hihoCoder#1038 : 01背包
    初识Dubbo 系列之4-Dubbo 依赖
    计算机相关专业的同学该怎么用自己的计算机
    十天学习PHP之第三天
    Android之Fragment的优点和作用
    Fragment的生命周期
  • 原文地址:https://www.cnblogs.com/etllearn/p/15014040.html
Copyright © 2020-2023  润新知