oracle在存储过程中定义游标

2025-01-22 12:42:40
推荐回答(2个)
回答1:

create table emp 
( id varchar2(10),
name varchar2(20),
sex number,
duty varchar2(20)
);

insert into emp values('001','Tom',1,'gcs');
insert into emp values('002','John',1,'dba');
insert into emp values('003','Jean',0,'gcs');
insert into emp values('004','Reid',1,'gcs');
commit;


create or replace procedure pro6 as

  cursor cr is
    select *
      from emp
     where sex = 1
       and duty = 'gcs';
begin
  for cr_result in cr loop
    begin
      dbms_output.put_line('ID: ' || cr_result.id || ' NAME: ' ||
                           cr_result.name);
    
    end;
  end loop;
end pro6;

回答2:

create or replace
procedure pro6
as
  vempno emp.empno%type;
  vename emp.ename%type;
  cursor c_emp is select empno,ename from emp;
begin
  open c_emp;
  loop
      fetch c_emp into vempno,vename;
      exit when c_emp%notfound;
      dbms_output.put_line('编号:' || vempno || ' 姓名:' || vename);
  end loop;
  close c_emp;
end;