Oracle游标

1 游标的作用相当于指针,通过游标PL/SQL可以一次处理查询结果集中的一行。oracle中,有显示游标和隐式游标.

游标的操作步骤  声明游标、打开游标、读取游标、关闭游标,4个步骤。游标每次只能读取一行数据,对于多条记录,需要反复的读取,直到游标读取不到数据为止。

 

--游标操作
set serveroutput on
declare
/*声明游标 检索雇员信息*/
cursor cur_emp(var_job in varchar2:='salesman')
is select empno,ename,sal
from emp
where job=var_job;
type record_emp is record
(
/*定义当前的成员变量*/
var_empno emp.empno%type,
var_ename emp.ename%type,
var_sal emp.sal%type
);
emp_row record_emp;
begin
open cur_emp('MANAGER');
fetch cur_emp into emp_row;
while cur_emp%found
loop
dbms_output.put_line(emp_row.var_ename||'的编号是'||emp_row.var_empno||',工资是'||emp_row.var_sal);
fetch cur_emp into emp_row;
end loop;
close cur_emp;
end;

--2018-03-27 22:51:46

游标的4个属性 %found %notfound %isopen %rowcount

--%found 布尔型属性 如果sql语句至少影响到一行数据,则返回true,否则false

--%notfound 布尔型属性 与%found属性相反

--%isopen 布尔型属性   游标已经打开时返回true 否则返回false

--%rowcount 数字型属性 返回sql语句受影响的行数

set serveroutput on
declare
var_ename varchar2(20);
var_job varchar2(50);
cursor cur_emp
is select ename,job from emp where empno=7599;
begin
open cur_emp;
fetch cur_emp into var_ename,var_job;
if cur_emp%found then
dbms_output.put_line('编号是7499的雇员名称是'||var_ename||',职务是:'||var_job);
else
dbms_output.put_line('无数据记录');
end if;
end;

--for 语句和游标结合使用
declare
cursor cur_emp is select *from emp where deptno=30;
begin
for emp_record in cur_emp loop
dbms_output.put('雇员编号:'||emp_record.empno);
dbms_output.put('雇员名称:'||emp_record.ename);
dbms_output.put_line('雇员职务:'||emp_record.job);
end loop;
end;

posted @ 2018-03-26 23:06  小猫钓鱼吃鱼  阅读(135)  评论(0编辑  收藏  举报