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

Oracle Discussion :

Procédure stockée en Oracle 10g


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Procédure stockée en Oracle 10g
    Bonjour, je suis débutant en Oracle et je travaille avec Oracle 10g edition entreprise R2, je veux faire une base de données de gestion d'une école, alors une idée m'a traversé la tête,
    après avoir fini de créer les tables, je ne voulais pas pour chaque insertion de données utiliser la commande <<insert into table>>, donc j'ai voulu écrire des procédures stockées pour ça, et ça ne marche pas on me dit procédure créée avec erreurs de compilation
    exemple: regardez cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE PROCEDURE saisir(id t_eleve.id%type,nom t_eleve.nom%type,prenom t_eleve.prenom%type) IS
    BEGIN
    -----t_eleve est la table eleve
    insert into t_eleve(id,nom,prenom) values
    (id,nom,prenom);
    commit;
    end;
    /
    dès que je tape entrée ici, on me dit procédure créée avec erreur de compilation.
    Merci de me venir en aide.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Sous sqlplus faire show err pour voir les erreurs. Ou utilisez un environnement de développement comme SQL Developper.

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Petit conseil plsql : évitez de nommer des paramètres avec les mêmes noms que les colonnes.

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par McM Voir le message
    Petit conseil plsql : évitez de nommer des paramètres avec les mêmes noms que les colonnes.
    Actuellement je le fais d'une manière systématique, c'est à dire: le nom du paramètre est le même que la colonne à laquelle il corresponde. Adieu les _i les _o les _p ou quoi j'en sais encore.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Et comment fais tu pour les select, update, pour différencier les colonnes des paramètres ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE PROCEDURE Maproc (dummy IN varchar2)
    IS
     v varchar2(1);
    BEGIN
     SELECT dummy INTO v FROM dual WHERE dummy = dummy;
    	RAISE_APPLICATION_ERROR(-20001, 'resultat:'|| v);
    END;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec Maproc('a'); 
    -- X
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec Maproc(NULL); 
    -- X

  6. #6
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Comme ça
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> CREATE OR REPLACE PROCEDURE Maproc (dummy IN varchar2)
      2  IS
      3   v varchar2(1);
      4  BEGIN
      5   SELECT t.dummy
      6     INTO v
      7     FROM sys.dual t
      8    WHERE t.dummy = Maproc.dummy;
      9    RAISE_APPLICATION_ERROR(-20001, 'resultat:'|| v);
     10  END;
     11  /
     
    Procedure created
     
    SQL> exec Maproc('a'); 
     
    begin Maproc('a'); end;
     
    ORA-01403: aucune donnée trouvée
    ORA-06512: à "MNI.MAPROC", ligne 5
    ORA-06512: à ligne 2
     
    SQL> exec Maproc(NULL); 
     
    begin Maproc(NULL); end;
     
    ORA-01403: aucune donnée trouvée
    ORA-06512: à "MNI.MAPROC", ligne 5
    ORA-06512: à ligne 2
     
    SQL> exec Maproc('X');
     
    begin Maproc('X'); end;
     
    ORA-20001: resultat:X
    ORA-06512: à "MNI.MAPROC", ligne 9
    ORA-06512: à ligne 2
     
    SQL>

  7. #7
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est une façon que je ne connaissais pas.

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Ce n'est pas juste une fonctionnalité un peu excentrique.
    Sur les avantages :
    • Lève la restriction concernant le nom des colonnes d’une table que les autres méthodes supposent (ex : ajoutez systématiquement un p_ dans le nom du paramètre impose qu’aucune colonne de la table ne soit préfixé avec p_)
    • A partir de 11g permet de ne plus invalider systématiquement les procédures PL/SQL quand l’objet référencé change.

    Désavantage :
    • Comme le nom des procédures est bien plus long on remplace deux ou trois caractères (p_, _i, _o, ou _io) par beaucoup plus

    Néanmoins, j’ai complétement adopté ce style.

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Je commence à faire les deux : nomproc.p$_monparam.
    Par contre j'ignorais le bénéfice sur l'invalidation.

Discussions similaires

  1. Réponses: 11
    Dernier message: 27/07/2012, 10h37
  2. [AC-2007] resultat d'une procédure stockée sur oracle
    Par Vyl.Coyot dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/05/2010, 14h37
  3. procédure stocké d'oracle
    Par saadoz dans le forum BIRT
    Réponses: 2
    Dernier message: 13/11/2009, 19h07
  4. Creer un procédure Stocké sous oracle
    Par ouadie99 dans le forum C#
    Réponses: 2
    Dernier message: 27/05/2008, 19h35
  5. Executer procédure stockée base oracle ADOStoredProc
    Par Akei dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/06/2004, 09h46

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