Hi zusammen,
sitze gerade an einer Aufgabe:
1a. Schreiben Sie eine Stored Procedure, die die Anzahl der Flugstunden eines Piloten (STUNDENANZAHL in der Tabelle PILOT) um die Anzahl der Flugstunden eines Fluges (FLUGZEIT in der Tabelle FLUGTYP) erhöht in Abhängigkeit von der PERSONALNUMMER des Piloten und der FLUGNUMMER.
1b. Überzeugen Sie sich von der Richtigkeit der Stored Procedure durch interaktiven Test in SQL*PLUS mit geeigneten Übergabeparametern.
Meine Überlegung dazu ist, wenn ich die Aufgabe richtig verstanden habe, ich soll also die Prozedur aufrufen mit z.b. updateflugstunden(personalnummer, flugnummer) und die entsprechenden Variablen dann benutzen. Also bekommt der Pilot mit der Nummer X dann die Flugzeit des Fluges Y gutgeschrieben. Sehe ich das so richtig?
Sollte doch so klappen, oder?
Und zum zweiten Teil:
Nutzen Sie die Stored Procedure aus Teil 1. um einen Insert Trigger für die Tabelle FLIEGT zu schreiben, der bei jedem Insert auf einem FLIEGT-Datensatz die Flugstunden dem entsprechenden Piloten gutschreibt bzw. in Abzug bringt.
Macht das Sinn?
Kann das alles leider nicht testen.
sitze gerade an einer Aufgabe:
1a. Schreiben Sie eine Stored Procedure, die die Anzahl der Flugstunden eines Piloten (STUNDENANZAHL in der Tabelle PILOT) um die Anzahl der Flugstunden eines Fluges (FLUGZEIT in der Tabelle FLUGTYP) erhöht in Abhängigkeit von der PERSONALNUMMER des Piloten und der FLUGNUMMER.
1b. Überzeugen Sie sich von der Richtigkeit der Stored Procedure durch interaktiven Test in SQL*PLUS mit geeigneten Übergabeparametern.
Meine Überlegung dazu ist, wenn ich die Aufgabe richtig verstanden habe, ich soll also die Prozedur aufrufen mit z.b. updateflugstunden(personalnummer, flugnummer) und die entsprechenden Variablen dann benutzen. Also bekommt der Pilot mit der Nummer X dann die Flugzeit des Fluges Y gutgeschrieben. Sehe ich das so richtig?
Code:
CREATE OR REPLACE PROCEDURE UPDATEFLUGSTUNDEN (ANR INT, FNR CHAR(6)) IS DECLARE CURSOR FlugzeitCursor IS SELECT flugzeit FROM FLUGTYP F WHERE F.flugnummer = FNR; flugzeitRecord FlugzeitCursor%ROWTYPE; BEGIN IF NOT FlugzeitCursor%ISOPEN THEN OPEN FlugzeitCursor; END IF; FETCH FlugzeitCursor INTO FlugzeitRecord; UPDATE PILOT SET STUNDENANZAHL = STUNDENANZAHL+FlugzeitRecord.Flugzeit WHERE Personalnummer = ANR; END;
Und zum zweiten Teil:
Nutzen Sie die Stored Procedure aus Teil 1. um einen Insert Trigger für die Tabelle FLIEGT zu schreiben, der bei jedem Insert auf einem FLIEGT-Datensatz die Flugstunden dem entsprechenden Piloten gutschreibt bzw. in Abzug bringt.
Code:
create or replace trigger test after insert of Flugstunden on Fliegt begin SELECT * FROM (SELECT ROWNUM rnum, flugnummer, personalnummer FROM (SELECT f.flugnummer, f.personalnummer FROM FLUGTYP f oder by f.flugnummer desc) WHERE ROWNUM <= 1) WHERE rnum > 0; UPDATEFLUGSTUNDEN(f.personalnummer, f.flugnummer); end;
Kann das alles leider nicht testen.
Comment