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 :

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
) ;
Et les tables :

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));
J'ai donc crée la procédure :

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;
Pas bien compliquée à première vue, mais impossible de la créer normalement.
Etant donné que je suis en ligne de commande, j'ai uniquement le message :
"created with compilations errors"
Même en bidouillant à droite à gauche, ça ne veut pas. La requête avec des valeurs fonctionne correctement.

Merci de bien vouloir me donner un petit coup de main.