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 :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ;
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 !
Partager