Bonjour à tous,
Je débute en PL/SQL et dans le cadre d'une base de gestion de produits je souhaite créer une procédure qui permet l'enregistrement de pièces.
Une pièce a une dimension et est composée d'une matière (bois, fer...).
J'ai crée les types suivants :
Et les tables :
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 CREATE OR REPLACE TYPE t_Matiere AS OBJECT ( Nom VARCHAR(30), Prix_Kilo numeric(10,2), Masse_Volumique integer(4) ) ; CREATE OR REPLACE TYPE t_Dimension AS OBJECT ( Longueur integer(4), Largueur integer(4), Hauteur integer(4), Diametre integer(4) ); CREATE OR REPLACE TYPE t_Piece AS OBJECT ( Nom VARCHAR(30), Forme VARCHAR(30), Dimension t_Dimension, Matiere REF t_Matiere ) ;
J'ai donc crée la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CREATE OR REPLACE TABLE Matieres OF t_Matiere (PRIMARY KEY(Nom)); CREATE OR REPLACE TABLE Pieces OF t_Piece (PRIMARY KEY(Nom));
Pas bien compliquée à première vue, mais impossible de la créer normalement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE OR REPLACE PROCEDURE insert_piece (p_nom IN VARCHAR(30), p_forme IN VARCHAR(30),p_dimension IN t_Dimension,p_matiere IN VARCHAR(30)) IS BEGIN INSERT INTO Pieces VALUES (p_nom,p_forme,p_dimension, (SELECT REF(m) FROM Matieres m WHERE m.Nom = p_matiere)); END;
Etant donné que je suis en ligne de commande, j'ai uniquement le message :
Même en bidouillant à droite à gauche, ça ne veut pas. La requête avec des valeurs fonctionne correctement."created with compilations errors"
Merci de bien vouloir me donner un petit coup de main.
Partager