Ejercicios Prácticos de PL/SQL en Oracle: Creación de Tablas, Inserción y Bloques Anónimos

Magisterio4,08 KB

Creación de Estructura de Base de Datos

A continuación se presenta la creación de las tablas relacionales para el sistema, incluyendo claves primarias y foráneas:

create table Departamento 
(codep number, 
nombredep varchar2(15), 
constraint codep_pk 
primary key(codep)); 

create table Profesor (codprof number, nombreprof varchar2(20), coddep number, constraint codprof_pk primary key(codprof), constraint Departamento_codep_fk foreign key(coddep) references Departamento(codep));

create table Asignatura (cod varchar2(20), nomasig varchar2(20), coddep number, codprof number, constraint cod_pk primary key(cod), constraint Profesor_codprof_fk foreign key(codprof) references Profesor(codprof));

Inserción de Datos

Se insertan los registros iniciales correspondientes a los departamentos, profesores y asignaturas:

insert into Departamento values(12,'informatica'); 
insert into Departamento values(14,'ventas'); 
insert into Departamento values(16,'publicidad'); 
insert into Departamento values(18,'diseño grafico'); 
insert into Departamento values(19,'mecanica'); 

insert into Profesor values(125,'juan soto',12); insert into Profesor values(130,'cesar quiroz',12); insert into Profesor values(129,'camila lara',18); insert into Profesor values(124,'ana muñoz',14); insert into Profesor values(126,'mariano jara',18); insert into Profesor values(127,'maria moya',12); insert into Profesor values(128,'carlos cruz',19);

insert into Asignatura values('pgb 240','programacion basica',12,125); insert into Asignatura values('bd 330','base de datos 1',12,130); insert into Asignatura values('dsb 450','diseño web',18,124); insert into Asignatura values('pbd 230','base de datos 2',12,125); insert into Asignatura values('mec 120','mecanica 1',19,128); insert into Asignatura values('mec 230','mecanica 2',19,128); insert into Asignatura values('ven 450','ventas 1',14,124);

Bloques de Código PL/SQL

1) Consulta con JOIN

Declare 
nomb varchar2(15); 
nom varchar2(20); 
Begin 
select Departamento.nombredep, Profesor.nombreprof into nomb, nom from Departamento, Profesor, Asignatura where Departamento.codep = Profesor.coddep and Profesor.codprof = Asignatura.codprof and Asignatura.nomasig = 'diseño web'; 
dbms_output.put_line('el nombre del departamento es :'||nomb); 
dbms_output.put_line('el nombre del profesor es :'||nom); 
End;

2) Actualización y Bloque Anidado

Declare 
nomprof varchar2(20); 
nom varchar2(20); 
Begin 
update Asignatura set nomasig = 'modelamiento dbdd' where codprof = 130; 
begin 
select Profesor.nombreprof, Asignatura.nomasig into nomprof, nom from profesor, Asignatura where Profesor.codprof = Asignatura.codprof and Asignatura.nomasig = 'modelamiento dbdd'; 
dbms_output.put_line('el nombre del profesor es :'||nomprof); 
dbms_output.put_line('el nombre de la asignatura es :'||nom); 
End; 
end;

3) Bloque Vacío

3)

4) Bucle LOOP

Declare 
numero1 number; 
codi number; 
nom varchar2(15); 
Begin 
numero1 := 12; 
loop 
select codep, nombredep into codi, nom from Departamento where codep = numero1; 
dbms_output.put_line('el codigo departamento es: '||codi); 
dbms_output.put_line('el nombre del departamento es: '||nom); 
dbms_output.put_line('*************** '); 
numero1 := numero1 + 2; 
exit when numero1 = 18; 
end loop; 
End;

5) Bucle FOR con ROWTYPE

Declare 
d Departamento%rowtype; 
Begin 
for d in (select Profesor.nombreprof, Asignatura.nomasig, Departamento.nombredep from Departamento, Profesor, Asignatura where Departamento.codep = Profesor.coddep and Profesor.codprof = Asignatura.codprof) 
loop 
dbms_output.put_line('el nombre del profesor es :'||d.nombreprof); 
dbms_output.put_line('el nombre de la asignatura es :'||d.nomasig); 
dbms_output.put_line('el nombre del departamento es :'||d.nombredep); 
dbms_output.put_line('************************'); 
end loop; 
End;

Descargar

PDF Word HTML