Procédure stockée PL/SQL ajout automatique sur table
Je débute en PL/SQL , donc un peu d'aide sera la bienvenue :)
j'ai les relations suivantes :
THEATRES (IDTHEATRE, NOMTHEATRE, ADRESSE, TEL, NBREPLACES)
AUTEURS (IDAUTEUR, PRENOMAUTEUR, NOMAUTEUR, NAISSANCE, DECES,NATIONALITE)
ACTEURS (IDACTEUR, PRENOMACTEUR, NOMACTEUR, #IDTHEATRE)
PIECES (IDPIECE, TITRE, TYPE, #IDTHEATRE, #IDAUTEUR)
REPRESENTATIONS (IDREPRESENTATION, #IDPIECE, DATE_A, PLACESRESTANTES)
JOUE (#IDACTEUR, #IDPIECE)
J'essaie de répondre aux questions suivantes :
1 . De créer un bloc PL/SQL pour ajouter automatiquement une pièce dans la base.
J'essaie avec :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
set serveroutput on;
CREATE OR REPLACE PROCEDURE Ajout (
n_PIECES_lu IN PIECES.IDPIECE%TYPE,
TITRE_PIECES_lu IN PIECES.TITRE%TYPE ,
TYPE_PIECES_lu IN PIECES.TYPE%TYPE,
IDTHEATRE_PIECES_lu IN PIECES.IDTHEATRE%TYPE,
IDAUTEUR_PIECE_lu IN PIECES.IDAUTEUR%TYPE )
IS
BEGIN
-- Insertion automatique d'une nouvelle pièce dans la table PIECES :
insert into PIECES(IDPIECE,TITRE,TYPE,IDTHEATRE,IDAUTEUR)
values(n_PIECES_lu, TITRE_PIECES_lu, TYPE_PIECES_lu,IDTHEATRE_PIECES_lu,IDAUTEUR_PIECE_lu);
-- Insertion automatique dans la table JOUE1 tous les acteurs pensionnaires du THEATRE où la pièce a été jouée :
For line in ( SELECT IDTHEATHRE FROM ACTEURS WHERE ACTEURS.IDTHEATRE=IDTHEATRE_PIECES_lu)
LOOP
insert into JOUE1 values (ligne.IDACTEUR,IDTHEATRE_PIECE_lu);
endloop
COMMIT;
END;
/
show errors ; |
ET insérer automatiquement dans la table JOUE tous les acteurs pensionnaires du théâtre comme acteurs de la pièce ( paramètres passés : ts les champs de PIECES ) . ===> Je ne vois pas trop cmt faire !! :p
2. Ajouter les traitements d'erreurs possibles :
- n° pièce déjà présent
- identifiant théâtre inconnu
- identifiant auteur inconnu
- le ‘Grenier théâtre’ ne présente jamais de pièces de type ‘Tragédie’,
- si la pièce est déjà donnée dans un autre théâtre (titre équivalent), le type de la pièce
doit être le même.
help ! :oops: