实例演示游标读取数据

(SQLdeveloper)声明一个检索emp表中雇员信息的游标,然后打开游标,并指定检索职务是"MANAGER"的雇员信息,接着使用fetch...into语句和while循环读取游标中的所有雇员信息,最后输出读取的雇员信息,代码如下:

declare
  /*声明游标,检索雇员信息*/
  cursor cur_emp(v_job in varchar2 := 'SALESMAN') is select empno,ename,sal 
  from emp where job = v_job;  --职务初始值为'SALESMAN',类型为varchar2 ,不能指定长度
  
  type record_emp is record(    --声明一个记录类型
    v_empno emp.empno%type,
    v_ename emp.ename%type,
    v_sal emp.ename%type
  );
  emp_row record_emp;

begin
  open cur_emp('MANAGER');      --打开游标
  fetch cur_emp into emp_row;  --先让指针指向结果集中的第一行,并将值保存在emp_row中
  while cur_emp%found loop
    dbms_output.put_line(emp_row.v_sal||'的编号是:'||emp_row.v_empno||',工资是:'||emp_row.v_sal);
    fetch cur_emp into emp_row; --让指针指向结果集中的下一行,并将值保存在emp_row中
  end loop;
  close cur_emp;
end;

结果如图:

实例演示游标读取数据_第1张图片
结果.jpg

对于上例中的代码,在while语句之前,首先使用fetch...into语句将游标中的指针移动到结果集中的第一行,这样属性%found就为TRUE,从而保证while语句的循环判断条件成立。

你可能感兴趣的:(实例演示游标读取数据)