zoukankan      html  css  js  c++  java
  • 【学亮IT手记】PL/SQL游标编程

    游标提供了一种从表中检索数据并进行操作的灵活手段,主要用在服务器上,处理由客户端发送给服务器端的sql语句,或者是批处理、存储过程、触发器中的数据处理请求。

    显式游标

    是由用户声明和操作的一种游标,通常用于将查询出的结果集进行操作,使用它处理数据的步骤包括:声明游标,打开游标,读取游标,关闭游标。

    ①声明游标

    cursor cur_emp 
    is
    select ename,job from emp where empno=7499;
    cur_emp:游标名称。

     ②打开游标

    open cur_emp

    ③读取游标

    fetct cur_emp into {variable}

    ④关闭游标

    close cur_emp

    游标的常用属性

    无论是显式游标还是隐式游标,都具有%found  %notfound  %rowcount  %isopen 这4个属性。

     1 declare
     2     var_ename varchar2(50);
     3     var_job varchar2(50);
     4 cursor cur_emp
     5 is
     6     select ename,job from emp where empno=7499;
     7 begin
     8     open cur_emp;
     9     fetch cur_emp into var_ename,var_job;
    10 if cur_emp%found then
    11     dbms_output.put_line('编号是7499的员工名称为:'||var_ename||',职务是:'||var_job);
    12 else
    13     dbma_output.put_line('无数据记录');
    14 end if;
    15 end;

     隐式游标

    在执行一个sql语句的时候,oracle会自动创建一个隐式游标。主要是针对update/delete语句的执行结果进行操作。

    1 begin
    2     update emp set sal=sal*(1+0.2) where job='SALESMAN';
    3     if sql%notfound then 
    4         dbms_output.put_line('没有雇员需要上调工资');
    5     else
    6         dbms_output.put_line(''||sql%rowcount||'个雇员工资上调20%');
    7     end if;
    8 end;

    使用for语句遍历游标

    ①使用for遍历隐式游标

    1 begin
    2     for emp_record in
    3         (select empno,ename,sal from emp where job='SALESMAN')
    4     loop
    5         dbms_output.put_line('雇员编号:'||emp_record.empno);
    6         dbms_output.put_line('雇员姓名:'||emp_record.ename);
    7         dbms_output.put_line('雇员工资:'||emp_record.sal);
    8     end loop;
    9 end;

    ②使用for遍历显式游标

     1 declare
     2     cursor cur_emp
     3 is
     4     select * from emp where deptno=30;
     5 begin
     6     for emp_record in cur_emp
     7     loop
     8         dbms_output.put_line('雇员编号:'||emp_record.empno);
     9         dbms_output.put_line('雇员姓名:'||emp_record.ename);
    10         dbms_output.put_line('雇员职务:'||emp_record.job);
    11     end loop;
    12 end;
  • 相关阅读:
    PHP文件上传错误类型及说明
    PHP截取字符串 兼容utf-8 gb2312
    php根据日期获得星期
    js根据日期获得星期
    股票的趋势以及高效买入
    制定自己的选股原则
    股市生存法则
    JSP学习
    ANdroid URL
    Adroid 展开收起效果实现
  • 原文地址:https://www.cnblogs.com/niwotaxuexiba/p/9462205.html
Copyright © 2011-2022 走看看