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.
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.
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.
Mayo 13, 2008 a las 7:59 pm
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.
Mayo 13, 2008 a las 8:23 pm
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.
Mayo 13, 2008 a las 8:31 pm
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.