• 1.3 变量


      在数据库开发过程中,对于一定数据量的数据,是可以用游标配合循环进行批量处理一些数据。游标我自己理解的是一块目标数据的缓存。

    1.弱类型 ref cursor
    create or replace function selecvtallemployments 
       return sys_refcursor  -- 定义一个返回sys_refcursor的函数
    as
       st_cursor sya_refcursor;
    begin
       open st_cursor for
          select *
             from emp;
             --返回游标的指针
       return st_cursor;
    end;
    2. 使用引用游标
    declare
       x    sys_refcursor; --定义引用游标变量
       v_emp emp%rowtype; -- 定义获取游标结果的记录类型
    begin
         x:=selectallemployments; -- 调用函数获取游标指针
         -- 循环遍历游标指针
         loop
            fetch x
            into  v_emp;
            -- 当没找到游标记录时则退出
            exit when x%notfound;
            --输出记录信息
            dbms_output.put_line('员工编号:'
                                 ||v-emp.empno
                                 ||'员工名称'||v_emp.ename
                                 );
         end loop;
    end;
    3. 用户子类型使用引用游标
    declare
       subtype empcounttype is interger; -- 定义子类型
       empcount empcounttype; --声明子类型变量
    begin
         select count(*)     -- 查询emp表为子类型变量赋值
           into empcount
           from emp;
           -- 输出员工人数
           dbms_output.put_line('员工人数为:'||empcount);
    end;
    4.子类型
    declare
       type empnamelist is table of varchar2(20); --定义表类型
       --定义表类型的子类型
       subtype namelist is empnamelaist;
       -- 定义员工记录
       type emprec is record(
          empno number(4),
          ename varchar2(20)
       );
       -- 定义员工记录子类型
       subtype emprecord is emprec;
       -- 定义数据库表emp 中的empno 列类型
       subtype empno is emp.empno%type;
       --定义数据库表emp 中的行记录子类型
       subtype emprow is emp%rowtype;
    begin
        null;
    end;
    5.子类型数据检查
    declare
       subtype numtype is number(1,0);--定义子类型
       --定义子类型变量
       x_value numtype;
       y_value numtype;
    begin
       x_value :=3; -- 正常
       y_value :=10; -- 弹出异常提示
    end;
    6. 为约束类型
    
    declare
       subtype numtype is number; -- 定义类型和数量
       c_value number;
       y_value numtype;
    begin
         x_value :=10;  -- 赋初始值
         y_value :=x_value;-- 类型交换
    end;
    基类型相同使用

    declare
       subtype numtype is varchar2(200); --定义类型和变量
       x_value varchar2(20);
       y_value numtype;
    begin
       x_value:=' this is a word'; --赋初值
       y_value :=v_value; --类型交换
    end;

    7. 显示装换、
    declare
       v_startdate date; -- 起始日期
       v_enddate date; --结束日期
       v_resultdate number; --返回结果
    begin
         --起始日期,将字符串转换为日期
         v_startdate :=to_date('2007-10-11','yyyy-mm-dd');
         v_enddate :=trunc(syadate);  --赋日期值
         v_resultdate :=v_enddate=v_startdate; --进行日期转换
         -- 输出二者相差天数
         dbms_output.put_line('起始日期:'
                           ||to_char(v_startdate,'yyyy-mm-dd')
                           ||chr(13)
                           ||chr(10)
                           ||'结束日期:'
                           ||to_char(v_enddate,'yyyy-mm-dd')
                           ||chr(13)
                           ||chr(10)
                           ||'相差天数:'
                           ||to_char(v_resultdate)
                          );
    end;
    8. 隐式转换
    declare
       v_startdate char(10); --起始日期
       v_enddate char(10); --结束如期
       v_reslut number(5);
    begin
       select min(hiredate) into v_startdate from emp; -- 自动转换为字符型
       select trunc(sysdate) into v_enddate from dual; 
       -- 输出2者相差天数
       dbms_output.put_line('起始日期:'
                          ||v_startdate
                          ||chr(13)
                          ||chr(10)
                          ||'结束日期:'
                          ||v_enddate
                         );
       v_startdate:='200';   -- 为字符串赋值
       v_enddate:='400';
       v_result:=v_enddate-v_startdate;--对字符串进行运算
    end;
    10. 表达式赋值
    declare
       v_sal number; --定义变量
       v_result number;
    begin
       select sal
         into v_sal   --为变量赋值
         from emp 
        where empno=&empno;
       v_result :=v_sal *(1+0.15);   --使用表达式赋值
    end;
  • 相关阅读:
    项目使用 GlobalExceptionHandler 与 @RestControllerAdvice自定义异常 二
    spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
    项目使用 GlobalExceptionHandler 自定义异常 一
    idea 解决git更新冲突
    @JsonIgnore 失效没起作用及 @JSONField(serialize = false)
    Don't Sleep --- 阻止电脑休眠、睡眠小工具
    Win10 一键启用&禁用以太网bat命令
    如何将Chrome插件扩展下载到本地
    PC WorkBreak --- 在您使用 PC 时照顾您的健康工具
    闪电下载器
  • 原文地址:https://www.cnblogs.com/etllearn/p/15035938.html
Copyright © 2020-2023  润新知