2012-06-05 3 views
0

Я получил эту хранимую процедуру в оракулаВложенные курсоры в оракула

create or replace 
procedure mayor_sueldo 
as 
    cursor c_depto is select deptno from dept; 
    c_deptno dept.deptno%type; 
    c_empno number; 
    c_ename emp.ename%type; 
    c_job emp.job%type; 
    c_sal emp.sal%type; 
begin 
    open c_depto; 
    fetch c_depto into c_deptno; 
    while (c_depto%found)loop 
    select empno, ename, job, sal into c_empno, c_ename, c_job, c_sal from emp where sal = (select max(sal) from emp where(deptno = c_deptno)); 
    dbms_output.put_line(c_empno||'-'||c_ename||'-'||c_job||' '||c_sal); 
    fetch c_depto into c_deptno; 
    end loop; 
close c_depto; 
end; 

проблема находится внутри запроса внутри блока в то время, если запрос возвращает один и только один ряд не существует никаких проблем, но что делать, когда запрос верните более одной строки, я думал, что могу использовать другой курсор, но idk как. пожалуйста, помогите мне

ответ

1

может быть, это поможет: for _row in (select ....) loop dbms_output(_row.a || ..); end loop;

+0

Это сделало работу Спасибо! – Alejandro

Смежные вопросы