PLS/SQL
Crear un procedimiento que rellene una tabla llamada GANANCIAS – la tabla se crea previamente vacía-, almacene la información procedente de las tablas ciclista, etapa, puerto y llevar (si un ciclista no ha ganado nada NO se inserta el registro en la tabla
GANANCIAS):
1. Nombre del ciclista.
2. Número de etapas ganadas.
3. Veces que ha llevado cada maillot (puede no haber llevado ninguno o
varios).
4. Ganancias obtenidas, si por cada etapa ganada se le da un premio de 1000 €,
por cada puerto 500 € y por cada día que ha llevado un maillot obtiene un
premio de 100 €.
Este procedimiento se creará a partir de la siguiente diseño de base de datos.
Código SQL:
Ver original
-------------------------------------------------------- DROP TABLE "CICLISTA" cascade constraints; DROP TABLE "EQUIPO" cascade constraints; DROP TABLE "ETAPA" cascade constraints; DROP TABLE "LLEVAR" cascade constraints; DROP TABLE "MAILLOT" cascade constraints; DROP TABLE "PUERTO" cascade constraints; -------------------------------------------------------- -- DDL for Table CICLISTA -------------------------------------------------------- CREATE TABLE "CICLISTA" ( "DORSAL" NUMBER(3,0), "NOMBRE" VARCHAR2(30), "EDAD" NUMBER(2,0), "NOMEQUIPO" VARCHAR2(25) ) ; -------------------------------------------------------- -- DDL for Table EQUIPO -------------------------------------------------------- CREATE TABLE "EQUIPO" ( "NOMEQUIPO" VARCHAR2(25), "DIRECTOR" VARCHAR2(100) ) ; -------------------------------------------------------- -- DDL for Table ETAPA -------------------------------------------------------- CREATE TABLE "ETAPA" ( "NUMETAPA" NUMBER(2,0), "KMS" NUMBER(3,0), "SALIDA" VARCHAR2(35), "LLEGADA" VARCHAR2(35), "DORSAL" NUMBER(3,0) ) ; -------------------------------------------------------- -- DDL for Table LLEVAR -------------------------------------------------------- CREATE TABLE "LLEVAR" ( "DORSAL" NUMBER(3,0) "CODIGO" CHAR(3), "NUMETAPA" NUMBER(2,0), ) ; -------------------------------------------------------- -- DDL for Table MAILLOT -------------------------------------------------------- CREATE TABLE "MAILLOT" ( "CODIGO" CHAR(3), "TIPO" VARCHAR2(30), "COLOR" VARCHAR2(20), "PREMIO" NUMBER(7,0) ) ; -------------------------------------------------------- -- DDL for Table PUERTO -------------------------------------------------------- CREATE TABLE "PUERTO" ( "NOMPUERTO" VARCHAR2(35), "ALTURA" NUMBER(4,0), "CATEGORIA" CHAR(1), "PENDIENTE" NUMBER(3,2), "NUMETAPA" NUMBER(2,0), "DORSAL" NUMBER(3,0) ) ; -- DDL for Index PK_CICLI -------------------------------------------------------- CREATE UNIQUE INDEX "PK_CICLI" ON "CICLISTA" ("DORSAL") ; -------------------------------------------------------- -- DDL for Index PK_EQUI -------------------------------------------------------- CREATE UNIQUE INDEX "PK_EQUI" ON "EQUIPO" ("NOMEQUIPO") ; -------------------------------------------------------- -- DDL for Index PK_ETA -------------------------------------------------------- CREATE UNIQUE INDEX "PK_ETA" ON "ETAPA" ("NUMETAPA") ; -------------------------------------------------------- -- DDL for Index PK_LLE -------------------------------------------------------- CREATE UNIQUE INDEX "PK_LLE" ON "LLEVAR" ("NUMETAPA", "CODIGO") ; -------------------------------------------------------- -- DDL for Index PK_MAI -------------------------------------------------------- CREATE UNIQUE INDEX "PK_MAI" ON "MAILLOT" ("CODIGO") ; -------------------------------------------------------- -- DDL for Index PK_PUERTO -------------------------------------------------------- CREATE UNIQUE INDEX "PK_PUERTO" ON "PUERTO" ("NOMPUERTO") ; -------------------------------------------------------- -- Constraints for Table CICLISTA -------------------------------------------------------- ALTER TABLE "CICLISTA" ADD CONSTRAINT "PK_CICLI" PRIMARY KEY ("DORSAL") ENABLE; ALTER TABLE "CICLISTA" MODIFY ("DORSAL" NOT NULL ENABLE); ALTER TABLE "CICLISTA" MODIFY ("NOMBRE" NOT NULL ENABLE); -------------------------------------------------------- -- Constraints for Table EQUIPO -------------------------------------------------------- ALTER TABLE "EQUIPO" ADD CONSTRAINT "PK_EQUI" PRIMARY KEY ("NOMEQUIPO") ENABLE; ALTER TABLE "EQUIPO" MODIFY ("NOMEQUIPO" NOT NULL ENABLE); -------------------------------------------------------- -- Constraints for Table ETAPA -------------------------------------------------------- ALTER TABLE "ETAPA" ADD CONSTRAINT "PK_ETA" PRIMARY KEY ("NUMETAPA") ENABLE; ALTER TABLE "ETAPA" MODIFY ("NUMETAPA" NOT NULL ENABLE); -------------------------------------------------------- -- Constraints for Table LLEVAR -------------------------------------------------------- ALTER TABLE "LLEVAR" ADD CONSTRAINT "PK_LLE" PRIMARY KEY ("NUMETAPA", "CODIGO") ENABLE; ALTER TABLE "LLEVAR" MODIFY ("CODIGO" NOT NULL ENABLE); ALTER TABLE "LLEVAR" MODIFY ("NUMETAPA" NOT NULL ENABLE); ALTER TABLE "LLEVAR" MODIFY ("DORSAL" NOT NULL ENABLE); -------------------------------------------------------- -- Constraints for Table MAILLOT -------------------------------------------------------- ALTER TABLE "MAILLOT" ADD CONSTRAINT "PK_MAI" PRIMARY KEY ("CODIGO") ENABLE; ALTER TABLE "MAILLOT" MODIFY ("CODIGO" NOT NULL ENABLE); -------------------------------------------------------- -- Constraints for Table PUERTO -------------------------------------------------------- ALTER TABLE "PUERTO" ADD CONSTRAINT "PK_PUERTO" PRIMARY KEY ("NOMPUERTO") ENABLE; ALTER TABLE "PUERTO" MODIFY ("NOMPUERTO" NOT NULL ENABLE); ALTER TABLE "PUERTO" MODIFY ("NUMETAPA" NOT NULL ENABLE); -------------------------------------------------------- -- Ref Constraints for Table CICLISTA -------------------------------------------------------- ALTER TABLE "CICLISTA" ADD CONSTRAINT "FK_CICLI_EQUI" FOREIGN KEY ("NOMEQUIPO") REFERENCES "EQUIPO" ("NOMEQUIPO") ENABLE; -------------------------------------------------------- -- Ref Constraints for Table ETAPA -------------------------------------------------------- ALTER TABLE "ETAPA" ADD CONSTRAINT "FK_ETAPA_CICLI" FOREIGN KEY ("DORSAL") REFERENCES "CICLISTA" ("DORSAL") ENABLE; -------------------------------------------------------- -- Ref Constraints for Table LLEVAR -------------------------------------------------------- ALTER TABLE "LLEVAR" ADD CONSTRAINT "FK_LLEVAR_CICLI" FOREIGN KEY ("DORSAL") REFERENCES "CICLISTA" ("DORSAL") ENABLE; ALTER TABLE "LLEVAR" ADD CONSTRAINT "FK_LLEVAR_ETAPA" FOREIGN KEY ("NUMETAPA") REFERENCES "ETAPA" ("NUMETAPA") ENABLE; ALTER TABLE "LLEVAR" ADD CONSTRAINT "FK_LLEVAR_MAI" FOREIGN KEY ("CODIGO") REFERENCES "MAILLOT" ("CODIGO") ENABLE; -------------------------------------------------------- -- Ref Constraints for Table PUERTO -------------------------------------------------------- ALTER TABLE "PUERTO" ADD CONSTRAINT "FK_PUERTO_CICLI" FOREIGN KEY ("DORSAL") REFERENCES "CICLISTA" ("DORSAL") ENABLE; ALTER TABLE "PUERTO" ADD CONSTRAINT "FK_PUERTO_ETA" FOREIGN KEY ("NUMETAPA") REFERENCES "ETAPA" ("NUMETAPA") ENABLE;