Base De Datos, Ejemplos Claros
Hacer 2 ejemplos de cursores, y un ejemplo de procedimiento y función.
CURSORES
NOMBRE DE PERSONAS QUE DEVENGAN UN SALARIO MENOR A 1000000
select nmbreprsna, slriobsmnsualFROM cargo c, persona p
WHERE p.idcargo = c.idcargo and c.slriobsmnsual < 1000000;
SET SERVEROUTPUT ON
DECLARE
CURSOR gruposeis
IS
select c.idcargo, slriobsmnsual
FROM cargo c,persona p
WHERE p.idcargo = c.idcargo and c.slriobsmnsual < 1000000;
salario NUMBER;
cdgo CHAR(5);
contador NUMBER :=0;
BEGIN
OPEN gruposeis;
LOOPFETCH gruposeis INTO cdgo, salario;
IF gruposeis%FOUND THEN
UPDATE cargo
SET slriobsmnsual = (salario * 1.1)
WHERE idcargo = cdgo;
contador := contador + 1;END IF;
EXIT WHEN gruposeis%NOTFOUND;
END LOOP;
CLOSE gruposeis;
dbms_output.put_line(‘sueldos incrementados en un 10%’);
dbms_output.put_line(‘Semodificaron’);
dbms_output.put_line(contador);
END;
Quienes no tienen auxilio de transporte
SELECT distinct p.idprsna as "id" , nmbreprsna as "nombre"
FROM persona p
WHERE
p.idprsna notin(SELECT ndd.idprsna from nmnadevded ndd
WHERE ndd.iddevded ='001');
DECLARE
CURSOR gruposeis
IS
SELECT distinct p.idprsna as "id" , nd.idnomina
FROM persona p, nmnadevded ndWHERE
nd.idprsna = p.idprsna AND
p.idprsna not in(SELECT ndd.idprsna from nmnadevded ndd
WHERE ndd.iddevded ='001');
cdgo VARCHAR(15);
cdgonmn CHAR(5);
contador NUMBER:=0;
BEGIN
OPEN gruposeis;
LOOP
FETCH gruposeis INTO cdgo,cdgonmn;
IF gruposeis%FOUND THEN
INSERT INTO nmnadevded VALUES (cdgonmn,'001',cdgo,65900);contador := contador + 1;
END IF;
EXIT WHEN gruposeis%NOTFOUND;
END LOOP;
CLOSE gruposeis;
dbms_output.put_line('Auxilios de transporte asignados a quienes no lo tenían’);...
Regístrate para leer el documento completo.