tarnx | 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 :
- 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 :
- 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 :
- 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 :
Citation:
"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. Message édité par tarnx le 05-11-2011 à 17:49:04
|