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 :

Procédure PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Par défaut Procédure PL/SQL
    Bonjour,

    Je débute en PL/SQL, et j'aimerais mettre en place une procédure qui prend en paramètre une chaine de caractère. Mais ça ne fonctionne pas et je n'ai aucune idée pour debugger. Je vous remercie de votre aide



    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
    SET SERVEROUTPUT ON
    CREATE PROCEDURE maj_vente(jobi in varchar2(20)) is
    Nom1 varchar2(20);
    Prenom1 varchar2(20);
    begin
     
    select FIRST_NAME into Nom1, LAST_NAME into Prenom1 from hr.EMPLOYEES where JOB_ID=jobi;
    dbms_output.put_line('Nom et prenom correspondant à ce JOD_ID est  :' || Nom1|| '-->'|| Prenom1);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    dbms_output.put_line('Nom et prenom correspondant à ce JOD_ID est :');
    WHEN TO_MANY_ROW THEN
    dbms_output.put_line('il y a plusieurs lignes');
    END;
     
     
    /
    EXECUTE  maj_vente('IT_PROG');

    Voici la log



    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
    select FIRST_NAME into Nom1, LAST_NAME into Prenom1 from hr.EMPLOYEES where JOB_ID=jobi;
    dbms_output.put_line('Nom et prenom correspondant à ce JOD_ID est  :' || Nom1|| '-->'|| Prenom1);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    dbms_output.put_line('Nom et prenom correspondant à ce JOD_ID est :');
    WHEN TO_MANY_ROW THEN
    dbms_output.put_line('il y a plusieurs lignes');
    END;
    Rapport d'erreur :
    ORA-00955: name is already used by an existing object
    00955. 00000 -  "name is already used by an existing object"
    *Cause:    
    *Action:
    Erreur commençant à la ligne 19 de la commande :
    EXECUTE  maj_vente('IT_PROG')
    Rapport d'erreur :
    ORA-06550: line 1, column 8:
    PLS-00905: object SYSTEM.MAJ_VENTE is invalid
    ORA-06550: line 1, column 8:
    PL/SQL: Statement ignored
    06550. 00000 -  "line %s, column %s:\n%s"
    *Cause:    Usually a PL/SQL compilation error.
    *Action:

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Je perçois deux erreurs :
    1. Il ne faut pas préciser la taille dans la liste des paramètres, juste le type.
    2. Le INTO se fait entre le SELECT et le FROM, pas au milieu des colonnes.

    N'hésitez pas à lire et relire le guide PL/SQL :
    http://sheikyerbouti.developpez.com/pl_sql/?page=Chap4

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

    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
    Billets dans le blog
    4
    Par défaut
    Cette erreur aussi ORA-00955 : Il manque un or replace
    CREATE indique que l'on veut créer une procédure stockée dans la base
    La clause facultative OR REPLACE permet d'écraser une procédure existante portant le même nom

  4. #4
    Membre Expert
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Par défaut
    Merci pour la réponse, par contre je ne comprends pas pourquoi le into n'est pas à sa place. Je vais tester ce soir

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

    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
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select col1, col2, col3.... colx 
    INTO v1, v2... vx
    FROM

  6. #6
    Membre Expert
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Par défaut
    Merci Mcm

    (Tellement habitué à bosser sous SAS)

Discussions similaires

  1. Procédures stockées SQL Server compatibles avec MySQL ?
    Par Nen'S dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/01/2006, 19h18
  2. Réponses: 4
    Dernier message: 12/12/2005, 17h25
  3. Pb pour executer une procédure sous SQL PLUS
    Par rabddoul dans le forum Oracle
    Réponses: 4
    Dernier message: 21/10/2005, 15h40
  4. Ma procédure PL/SQl devrait ramener plrs enrg...
    Par Titouf dans le forum PL/SQL
    Réponses: 3
    Dernier message: 03/10/2005, 09h44
  5. [Oracle] Exécuter une procédure PL/SQL en PHP?
    Par Cerberes dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 25/02/2005, 14h11

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