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

SQL Oracle Discussion :

Création procédure: il manque quelquechose ?


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut Création procédure: il manque quelquechose ?
    Bonsoir,

    Je dois crée une procédure mais la création ne se fait pas, j'ai pourtant essayé de respecter ce qui est dit dans le bouquin d'oracle, mais rien à faire. Voici ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace procedure crea_dim_piece
    (nom_piece in varchar2, coordonnée_x in number, coordonnée_y in number)
    is
    begin
    declare
    begin
    Insert into dimensions_de_la_piece values (sequence1.NEXTVAL,nom_piece, cordonnée_x, coordonnée_y);
    end;
    Qu'en pensez vous ?

    D'avance merci.

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE OR REPLACE PROCEDURE crea_dim_piece (
       nom_piece      IN   VARCHAR2,
       coordonnée_x   IN   NUMBER,
       coordonnée_y   IN   NUMBER
    )
    IS
    BEGIN
       INSERT INTO dimensions_de_la_piece
            VALUES (sequence1.NEXTVAL, nom_piece, cordonnée_x, coordonnée_y);
    END;
    Remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE [OR REPLACE] PROCEDURE procedure_name
        [ (parameter [,parameter]) ]
    IS
        [declaration_section]
    BEGIN
        executable_section
    [EXCEPTION
        exception_section]
    END [procedure_name];

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Merci mais cela ne fonctionne toujours pas, comme tout à l'heure on dirait qu'il lui manque quelque chose ...

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Quelles sont erreurs retournées par la commande show errors; ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    J'ai l'impression qu'il ne voit pas que la requête est terminé ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> show errors
    Pas d'erreur.

  6. #6
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    pour exécuter un block pl/sql sous sql*plus il faut ajouter '/' :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE PROCEDURE crea_dim_piece (
       nom_piece      IN   VARCHAR2,
       coordonnée_x   IN   NUMBER,
       coordonnée_y   IN   NUMBER
    )
    IS
    BEGIN
       INSERT INTO dimensions_de_la_piece
            VALUES (sequence1.NEXTVAL, nom_piece, cordonnée_x, coordonnée_y);
    END;
    /
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    merci, effectivement ça passe à la compilation mais maintenant j'ai un tas d'erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ERREUR à la ligne 1 :
    ORA-01438: valeur incohérente avec la précision indiquée pour cette colonne
    ORA-06512: à "TP.CREA_DIM_PIECE2", ligne 8
    ORA-06512: à ligne 1
    Je pense qu'il bloque au niveau de la séquence, séquence qui est enfaite destinée à générer la clé primaire de la table.

  8. #8
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Postes le DDL (ou un desc) de la table...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Nom                                       NULL ?   Type
    ----------------------------------------- -------- ----------------------------
    NUM_COTES_PIECES                          NOT NULL NUMBER(2)
    NOM_PIECE                                 NOT NULL VARCHAR2(10)
    COORDONNEE_EN_ABSISSE_X                   NOT NULL NUMBER(5)
    COORDONNEE_EN_ORDONNEE_Y                  NOT NULL NUMBER(5)

  10. #10
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    l'erreur mentionne CREA_DIM_PIECE2 ? le code de la procédure ne la mentionne pas ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Je suis vraiment désolé, j'ai omis quelque chose, enfaite j'ai recrée une variable supplémentaire car je pensais que c'était la séquence dans la procédure qui bloquer, j'ai recrée une procédure en ajoutant une variable pour pouvoir passer la séquence dans les paramètres, voici le nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR REPLACE PROCEDURE crea_dim_piece3 (
       ncp in number,
       np      IN   VARCHAR2,
       cx   IN   NUMBER,
       cy   IN   NUMBER
     
    )
    IS
    BEGIN
       INSERT INTO dimensions_de_la_piece
            VALUES (ncp, np, cx, cy);
    END;
    /
    Je ne sais pas pourquoi mais maintenant il me renvoie des codes erreurs différents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ERREUR à la ligne 1 :
    ORA-06550: Ligne 1, colonne 34 :
    PLS-00357: Référence de Table, Vue ou Séquence 'SEQUENCE2.NEXTVAL' non
    autorisée dans ce contexte
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored
    Pour info j'ai testé la requête indépendamment de la procédure et elle fonctionne ...

  12. #12
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    l'erreur mentionne SEQUENCE2.NEXTVAL, mais ton dernier code posté ne la mentionne pas ?

    Poste le bon code et l'erreur qui le suit...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create sequence sequence2
    start with 10 increment by 10
    minvalue 10
    cache 1000 nocycle noorder;
    Pour le reste rien n'a changé, enfaite j'ai dû créer une autre séquence avec une incrémentation de 10 car la clé primaire est une longueur de 2 et avec un number d'une longueur de 1 il refusait la création de l'enregistrement.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2008, 21h47
  2. création procédure stockée
    Par Alex35 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/10/2007, 14h16
  3. création procédure stocké
    Par morados dans le forum C#
    Réponses: 2
    Dernier message: 23/07/2007, 10h48
  4. Problème Création Procédure
    Par Yndigos dans le forum Oracle
    Réponses: 6
    Dernier message: 08/07/2006, 10h02
  5. [db2][Procedure]Pb de création procédure
    Par yoyopi dans le forum DB2
    Réponses: 1
    Dernier message: 28/04/2006, 16h11

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