Salve a tutti chiedo un grandissimo aiuto.
sto creando delle procedure il PL\sql con oracle ma questa procedura mi sta dando parecchie rogne
prendiamo in considerazione le 2 tabelle che mi servono in questa procedura
CLIENTI E VIAGGIO
in clienti ci son molti attributi tra cui un cod_matricola PK
e un codice fiscale
mentre in viaggi abbiamo in ID_viaggio
cod_cliente ovvero la FK a cod_matricola
e altri atribbuti che non ci interessano
in pratica questa procedura deve vedere se un cliente ha piu di 2 vetture (facendo un caunt sul codice fiscale) e inserirlo nella tabella viaggio sempre se in questultima non sia gia inserito
ovvero cliente 101 ha 3 assicurazioni ok vince 1 viaggio
oppure
cliente 101 ha 4 assicurazioni ma e gia inserito in viaggi quindi non vince nulla XD
Codice PHP:
CREATE OR REPLACE PROCEDURE P3(ID_VIAGGIO VARCHAR2,LUOGO VARCHAR2,GIORNI NUMBER,D_PARTENZA VARCHAR2,COD_CLIENTE VARCHAR2,COD_AGENZIA VARCHAR2)IS
CURSOR CONTROLLOVIAGGI IS (SELECT COUNT(CC_F),MIN(C_MATRICOLA),CC_F FROM CLIENTE GROUP BY CC_F HAVING COUNT(CC_F)>=2);
CURSOR VIAGG IS (SELECT COD_CLIENTE FROM VIAGGIO WHERE COD_CLIENTE IS NOT NULL);
A NUMBER :=0; --i del for (controllo viaggi)
B NUMBER :=0; -- i del for (viagg)
C_MATRI CLIENTE.C_MATRICOLA%TYPE; --matricola presente nella tabella cliente
C_VIAGGIO VIAGGIO.COD_CLIENTE%TYPE; - codice viaggio presente nella tabella viaggio
VIAGGIO_NOT_FOUND EXCEPTION;
BEGIN
FOR B IN VIAGG LOOP
FOR A IN CONTROLLOVIAGGI LOOP
IF(C_MATRI=C_VIAGGIO) THEN
RAISE VIAGGIO_NOT_FOUND;
END IF;
END LOOP CONTROLLOVIAGGI;
END LOOP VIAGG;
EXCEPTION
WHEN VIAGGIO_NOT_FOUND THEN
DBMS_OUTPUT.PUT_LINE('CLIENTE GIA PRESENTE');
RAISE_APPLICATION_ERROR(-20000,'CLIENTE GIA VINCITORE');
END P3;
qui vi allego la creazione delle 2 tabelle per chiarirvi piu le idee credo che il mio errore sia nei 2 cicli for innestati
Codice PHP:
CREATE TABLE CLIENTE(
C_MATRICOLA VARCHAR2(20) PRIMARY KEY,
LAVORO VARCHAR2(20) DEFAULT 'DISOCCUPATO',
ETA NUMBER NOT NULL,
CC_F VARCHAR2(16) NOT NULL,
ID_RICH VARCHAR2(5) NOT NULL,
FOREIGN KEY (CC_F) REFERENCES Persona(CF),
FOREIGN KEY (ID_RICH) REFERENCES RICHIEDENTE(ID_RICHIEDENTE));
CREATE TABLE VIAGGIO(
ID_VIAGGIO VARCHAR2(4) PRIMARY KEY,
LUOGO VARCHAR2(20) NOT NULL,
GIORNI NUMBER NOT NULL,
D_PARTENZA VARCHAR2(10) NOT NULL,
COD_CLIENTE VARCHAR2(20),
COD_AGENZIA VARCHAR2(10),
FOREIGN KEY (COD_CLIENTE) REFERENCES CLIENTE(C_MATRICOLA),
FOREIGN KEY (COD_AGENZIA) REFERENCES LUOGO_LAVORO(ID_LAVORO));
vi prego aiutatemi sto semplicemente sclerando