Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    7

    Procedure con errori di compilazione

    Salve a tutti,
    ho una consegna di progetto lunedi 25 giugno, ma le procedure in oracle non mi vanno mi danno errori di compilazione..mi potreste dire dove sbaglio??

    --prenotazione evento

    CREATE OR REPLACE PROCEDURE PRENOTAZIONE_SERVIZIO(ID_E NUMBER,DATA_EV DATE,FASCIA_GIORNO

    VARCHAR2,ID_LOC NUMBER)
    IS


    DAT_EVENTO SERVIZIO.DATA%TYPE;
    MOMENTO VARCHAR2;
    DAT_LOC NUMBER;

    LOCAL_EXP EXCEPTION;
    LOCAL2_EXP EXCEPTION;
    LOCAL3_EXP EXCEPTION;

    --SELEZIONAMI LA DATA E LA FASCIA_ORARIA ALL'INTERNO DELLA TABELLA SERVIZIO DOVE LA DATA COINCIDE

    CON LA DATA IMMESSA IN INPUT

    CURSOR GETLIBERODATA IS
    SELECT DATA FROM SERVIZIO WHERE DATA=DATA_EV;

    CURSOR GETLIBEROMOMENTO IS
    SELECT FASCIA_ORARIA FROM SERVIZIO WHERE FASCIA_ORARIA=FASCIA_GIORNO;

    CURSOR GETLIBEROLOC IS
    SELECT ID_L FROM SERVIZIO WHERE ID_L=ID_LOC;

    BEGIN
    --CONTROLLO CHE LA DATA SIA LIBERA(E QUINDI NON CI SIA)
    OPEN GETLIBERODATA;
    FETCH GETLIBERODATA INTO DAT_EVENTO;
    IF GETLIBERODATA%NOTFOUND
    THEN
    RAISE LOCAL_EXP;
    END IF;
    CLOSE GETLIBERODATA;

    --CONTROLLA CHE LA FASCIA ORARIA SIA LIBERA
    OPEN GETLIBEROMOMENTO;
    FETCH GETLIBEROMOMENTO INTO MOMENTO;
    IF GETLIBEROMOMENTO%NOTFOUND
    THEN
    RAISE LOCAL2_EXP;
    END IF;
    CLOSE GETLIBEROMOMENTO;

    --CONTROLLO CHE LA LOCAZIONE SIA LIBERA
    OPEN GETLIBEROLOC;
    FETCH GETLIBEROLOC INTO DAT_LOC;
    IF GETLIBEROLOC%NOTFOUND
    THEN
    RAISE LOCAL3_EXP;
    END IF;
    CLOSE GETLIBEROLOC;


    INSERT INTO SERVIZIO(DATA ,FASCIA_ORARIA,ID_EVENTO,ID_L)
    VALUES(ID_E,DATA_EV,FASCIA_GIORNO,ID_LOC);

    EXCEPTION

    WHEN LOCAL_EXP THEN RAISE_APPLICATION_ERROR(-20487,'NON CI SONO EVENTI FISSATI IN QUESTA

    DATA');

    WHEN LOCAL2_EXP THEN RAISE_APPLICATION_ERROR(-20487,'NON CI SONO EVENTI FISSATI IN QUESTO

    MOMENTO DELLA GIORNATA');

    WHEN LOCAL3_EXP THEN RAISE_APPLICATION_ERROR(-20487,'NON CI SONO EVENTI FISSATI IN QUESTA

    LOCAZIONE,IN QUESTA DATA E IN QUESTO MOMENTO');

    END;
    /



    --sconto 20% PRODOTTI se la quantita è maggiore di 200 pezzi

    CREATE OR REPLACE PROCEDURE SCONTOPRODOTTI
    IS
    CURSOR C1 IS
    SELECT ID_P
    FROM E_INCLUSO
    WHERE QUANTITA>200;

    X NUMBER;


    BEGIN

    OPEN C1;
    FETCH C1 INTO X;

    IF C1%NOTFOUND
    THEN
    RAISE NOPROD;
    ELSE
    SET PREZZO=PREZZO*0,80;--SCONTO DEL 20% [80=100-20];
    END IF;
    CLOSE C1;

    EXCEPTION
    WHEN NOPROD THEN RAISE_APPLICATION_ERROR(-20234,'NESSUN PRODOTTO CON QUELLE QUANTITA');
    END;
    /


    --PROCEDURA DIPENDENTE
    CONTROLLA SE CI SONO DIPENDENTI ASSEGNATI AL SERVIZIO in caso nn ci siano avvisano l utente

    CREATE OR REPLACE PROCEDURE ASSOCIA_DIP(C_F_DIP VARCHAR2,DATA_S DATE)
    IS
    --CONTA I DIPENDENTI DALLA TABELLA LAVORA CON IL CF IMMESSO IN INPUT E LA DATA
    CURSOR C1 IS
    SELECT COUNT(*)
    FROM LAVORA
    WHERE C_F=C_F_DIP AND DATA=DATA_S;

    X NUMBER:=0;
    LOCAL_EXP EXCEPTION;

    BEGIN
    OPEN C1;
    FETCH C1 INTO X;
    CLOSE C1;
    --IS IL NUMERO DI DIP è MINORE DI 1(NN CI SONO DIPENDENTI,ALTRIMENTI TI AVVISA CHE CI SONO I DIPENDENTI
    IF X<1
    THEN
    RAISE LOCAL_EXP;
    ELSE
    DBMS_OUTPUT.PUT_LINE('CI SONO'||X||' DIPENDENTI CON CODICE FISCALE' || C_F_DIP || ' ASSEGNATI

    ALL'EVENTO ' );
    END IF;

    EXCEPTION
    when local_exp then raise_application_error (-20400,'NON CI SONO DIPENDENTI ASSEGNATI');
    END;
    /

  2. #2
    di sicuro ti verrà riportato un errore perché c'è un errore. dirci quale errore ti viene riportato ci aiuterebbe, ne convieni?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    7
    Mi dice procedura creata con errori di compilazione e poi qnd la vado a eseguire mi dice lo stato della procedura o package nn é corretto...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    7
    questi sono gli errori che mi da

    ERRORE alla riga 1:
    ORA-06550: riga 1, colonna 7:
    PLS-00905: l'oggetto CATERING.PRENOTAZIONE_SERVIZIO non Þ valido
    ORA-06550: riga 1, colonna 7:
    PL/SQL: Statement ignored

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.