jueves, 3 de mayo de 2012

Cursores 50% Control


Cursor con CICLO LOOP

set serveroutput on
DECLARE
  CURSOR ceEmpleado(pJOB VARCHAR2)
  IS
  SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY
  FROM EMPLOYEES
  where JOB_ID = pJOB;
 
    vID VARCHAR2(3);
    vNombre VARCHAR2(50);
    vApellido VARCHAR2(50);
    vSueldo INTEGER;
     
  BEGIN
    OPEN ceEmpleado('&pJOB');
    LOOP
        FETCH ceEmpleado INTO vID, vNombre, vApellido, vSueldo;
        EXIT WHEN ceEmpleado%NOTFOUND;
        dbms_output.put_line('ID: '||vID||' / '||'Nombre: '||vNombre||' / '||'Apellido: '||vApellido||' / '||'Sueldo: $'||vSueldo);
    END LOOP;
    CLOSE ceEmpleado;
END;





  -------------------------------------------------------
 
  set serveroutput on ---Cursor con CICLO WHILE
declare
  cursor crEmpleado(pJOB VARCHAR2)
    is select employee_id, first_name, salary
    from employees;
   
    registro crEmpleado%ROWTYPE;
begin
 open crEmpleado('&JOB');
 fetch crEmpleado into registro;
 while crEmpleado%FOUND loop
    dbms_output.put_line('Id:' ||registro.employee_id||' - '||' Nombre '||registro.first_name||'-'||' Salario '||' - '||registro.salary);
    fetch crEmpleado into registro;
  end loop;
  close crEmpleado;
end;
------------------------------------------------------------
  set serveroutput on---------CURSOR CON CICLO FOR
declare
  cursor crEmpleado
    is select employee_id, first_name, salary
    from employees;
begin
 for registro in crEmpleado loop
    dbms_output.put_line('Id:' ||registro.employee_id||' - '||' Nombre '||registro.first_name||'-'||' Salario '||' - '||registro.salary);
  end loop;
 end;