IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Erreur création de procédure


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut Erreur création de procédure
    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.

  2. #2
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Après le message "created with compilations errors", exécutez l'instruction suivante pour avoir le message d'erreur de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show error procedure insert_piece;

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Par défaut
    salut,

    Quand j'exec tes scripts j'ai une erreur sur la création des tables.

    Essaye de créer la table dans un premier temps et d'ajouter la contrainte de clé primaire après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE Matieres OF t_Matiere;
    ALTER TABLE Matieres ADD (
      CONSTRAINT PK_Matieres PRIMARY KEY(Nom)
    };
    /
    pareil pour ta table Pieces.

  4. #4
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    il manque des validations lors des créations de types :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TYPE t_Matiere AS OBJECT (
    	Nom VARCHAR(30),
    	Prix_Kilo numeric(10,2),
    	Masse_Volumique integer(4)
    ) ;
    /

  5. #5
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Moi, je ne mettrais pas de taille dans les paramètres de procedure !!!!
    Et transformerais VARCHAR en VARCHAR2, numeric et integer en NUMBER (types natifs "historiques" ORACLE)
    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,p_forme IN VARCHAR,p_dimension IN t_Dimension,p_matiere IN VARCHAR IS
    BEGIN
          INSERT INTO Pieces VALUES (p_nom,p_forme,p_dimension,
    (SELECT REF(m) FROM Matieres m WHERE m.Nom = p_matiere));
    END;
    De même , on peut se poser la question de l'emploi d'un modele objets plutot que d'un modele relationnel classique !!!

Discussions similaires

  1. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 09h39
  2. Réponses: 1
    Dernier message: 26/05/2005, 12h24
  3. Réponses: 4
    Dernier message: 14/06/2004, 16h18
  4. Problèmes création de procédures et de triggers
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 06/11/2003, 10h42
  5. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo