Fundamentals PL/SQL: Chapter 07 Advanced Explicit Cursos Concepts

3 comentarios para “Fundamentals PL/SQL: Chapter 07 Advanced Explicit Cursos Concepts”

  1. Martin Coronel Dice:

    En este ejemplo recuperamos las locations que se encuentran en Estados Unidos. Utilizando la clausula FOR UPDATE le indicamos que no espere a la actualizacion del campo state_province e imprimimos el resultado

    SET SERVEROUTPUT ON
    DECLARE
    CURSOR locations_cursor IS
    SELECT l.city, l.state_province, c.country_name as country
    FROM countries c, locations l
    WHERE l.country_id=c.country_id
    AND c.country_id =’US’
    FOR UPDATE OF state_province NOWAIT;
    BEGIN
    FOR locations_record IN locations_cursor
    LOOP
    DBMS_OUTPUT.PUT_LINE(locations_record.city||’ is located in ‘||locations_record.state_province);
    END LOOP;

    END;
    /

    ______________________________________
    La salida es:

    Southlake is located in Texas
    South San Francisco is located in California
    Seattle is located in Washington
    PL/SQL procedure successfully completed.

  2. pdjaramillo Dice:

    En este ejemplo presentaremos la informacion de las locaciones y los jefes respectivos con un id menor que 200, para lo cual capturaremos en un cursor los campos mencionados, para luego recorrerlos con un loop hasta obtener la consulta deseada

    Declare
    Cursor locationID IS
    Select l.location_id, d.manager_id
    From locations l, departments d
    Where l.location_id = d.location_id
    For UPDATE OF manager_id NOWAIT;
    BEGIN
    FOR loc_record IN locationID
    LOOP
    IF loc_record.manager_id < 200 THEN
    DBMS_OUTPUT.PUT_LINE(‘El jefe con id ‘|| loc_record.manager_id||’ trabaja en la locacion ‘|| loc_record.location_id);
    END IF;
    END LOOP;
    END;

    Respuesta:
    El jefe con id 124 trabaja en la locacion 1500
    El jefe con id 103 trabaja en la locacion 1400
    El jefe con id 149 trabaja en la locacion 2500
    El jefe con id 100 trabaja en la locacion 1700
    PL/SQL procedure successfully completed.

  3. Luis E Castillo Dice:

    Aquí propongo un ejemplo del uso de Cursores con parametros, el cual recibe el salario como parametro de entrada y muestra los nombres de los empleados con su Job_title. A este ejemplo lo que hago es crear una variable del tipo cursor [ R_EMP EMPJOB%ROWTYPE; ] en el que cargare los datos con un fetch de la siguiente manera FETCH EMPJOB INTO R_EMP;
    DECLARE
    CURSOR EMPJOB (E_SALARY EMPLOYEES.SALARY%TYPE) IS
    SELECT E.FIRST_NAME, E.LAST_NAME, J.JOB_TITLE
    FROM EMPLOYEES E, JOBS J WHERE E.JOB_ID = J.JOB_ID AND E.SALARY<=E_SALARY;
    R_EMP EMPJOB%ROWTYPE;
    BEGIN
    OPEN EMPJOB(1000);
    LOOP
    FETCH EMPJOB INTO R_EMP;
    DBMS_OUTPUT.PUT_LINE(R_EMP.FIRST_NAME||”||R_EMP.LAST_NAME||”||R_EMP.JOB_TITLE);
    EXIT WHEN EMPJOB%NOTFOUND;
    END LOOP;
    CLOSE EMPJOB;
    END;
    —————–
    Jennifer Whalen [Administration Assistant]
    Trenna Rajs [Stock Clerk]
    Curtis Davies [Stock Clerk]
    Randall Matos [Stock Clerk]
    Peter Vargas [Stock Clerk]
    Diana Lorentz [Programmer]
    Diana Lorentz [Programmer]
    PL/SQL procedure successfully completed.


Escribe un comentario