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 :

Procédure sans paramètres


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 34
    Par défaut Procédure sans paramètres
    Bonjour à tous.

    Je suis plus que débutant dans le domaine du PL/SQL.

    J'essai de faire une procédure sans paramètre et qui affiche les champs de ma requête que je souhaite Voila ce que j'essai, mais ça ne passe pas...
    (je travaille avec la version express d'oracle).

    CREATE OR REPLACE PROCEDURE reportingOuvrages
    IS
    Declare cursor les_ouvrages is SELECT id_ouv,titre_ouv,donne_nb_exemp_ouvrage_emp(id_ouv) FROM ouvrage;
    titre ouvrage.titre_ouv %TYPE ;


    BEGIN
    FOR s IN les_ouvrages
    Loop
    DBMS_OUTPUT.PUT_LINE (s.titre_ouv || ‘ ‘ || s.id_ouv) ;
    END Loop ;
    END ;
    /

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut
    Quelle erreur as-tu?

    A quoi te sert la ligne
    titre ouvrage.titre_ouv %TYPE ;

  3. #3
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par Phil_67 Voir le message
    Quelle erreur as-tu?

    A quoi te sert la ligne
    titre ouvrage.titre_ouv %TYPE ;
    Le for ne devrait pas être sur titre et les_ouvrages ?

  4. #4
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Salut,
    Je ne sais pas comment ça marche avec Express d'Oracle mais ça pourrait être le "declare" devant Cursor.

    Sinon affiche le message d'erreur. Utilise aussi les balises "code" pour que ton post soit lisible.

    a+

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut
    Enlève le Declare ! Psa de Declare dans une procédure ou une fonction

  6. #6
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    En plus, ton select dans le curseur m'a l'air bizarre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_ouv,titre_ouv,donne_nb_exemp_ouvrage_emp(id_ouv) FROM ouvrage;
    donne_nb_exemp_ouvrage_emp(id_ouv) c'est le nom d'une colonne de la table ouvrage ou c'est une fonction?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 34
    Par défaut
    Bonjour à tous et merci beaucoup pour votre aide c'est très sympa.

    Je ne savais pas pour le declare merci beaucoup (comme vous pouvez le voir, je débute....)

    Dans mon select : donne_nb_exemp_ouvrage_emp(id_ouv) est bien une fonction et celle-ci fonctionne très bien.

    Merci beaucoup McM pour ce code. La procédure se crée avec succès.

    J'essai de l'exécuter avec l'interface web d'oracle express avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute reportingOuvrages;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec reportingOuvrages;
    .

    J'ai le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00900: instruction SQL non valide
    Vous avez une petite idée sur ce souci?

    Je le lance dans SQL*PLUS et j'ai le message : "Procédure PL/SQL terminée avec succès" mais rien ne s'affiche..

    Merci d'avance pour votre aide précieuse

  8. #8
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Salut,
    Il faut activer l'affichage avant d'executer ta procedure;

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 34
    Par défaut
    Super merci beaucoup !!

    Je ne sais toujours pas pourquoi l'exécution de la procédure ne fonctionne pas avec l'interface d'oracle mais bon avec SQL*Plus ca fonctionne sans problème.

    Merci pour votre aide !!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 34
    Par défaut Création d'un Trigger
    Je préfère utiliser ce sujet car vous connaissez un peu sur quoi je travaille.

    Je souhaite créer un Trigger qui lorsqu'il y a un nouvel emprunt d'un ouvrage( table emprunter) rajoute 1 au champ nombresorties de la table ouvrage

    Voila ce que j'ai tenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE OR REPLACE TRIGGER inc_emprunter AFTER INSERT ON emprunter FOR EACH ROW 
    BEGIN
         	UPDATE ouvrage SET nombresorties=nombresorties+1 WHERE id_ouv= :new.id_ouv ;
    END ;
    Je n'ai pas d'erreur de syntaxe

    le :new.id_ouv est une clé étrangère qui correpond à la clé primaire de ouvrage.

    Lors de l'insertion dans la table emprunter, le champ nombressorties n'est pas incrémenté.

    Est-il possible de voir si un trigger s'exécute ou non?

    Merci d'avance

  11. #11
    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
    Tu peux essayer de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE...
    DBMS_OUTPUT.PUT_LINE('UPDATE :'|| :new.id_ouv ||' '|| SQL%ROWCOUNT || ' ligne');
    et faire une insertion sous sqlplus (en ayant au préalable fait un set output on)

  12. #12
    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
    Citation Envoyé par yanngolf Voir le message
    Je préfère utiliser ce sujet car vous connaissez un peu sur quoi je travaille.
    En fait, non, il ne faut pas. Parce que le sujet n'a plus rien a voir.
    Le forum est aussi fait pour que les recherches soient utilisées, donc si tu change de discussion au sein d'un même post, c'est pas bon.

Discussions similaires

  1. Procédure : avec ou sans paramètre ?
    Par paskal++ dans le forum Langage
    Réponses: 1
    Dernier message: 13/05/2008, 00h17
  2. Réponses: 0
    Dernier message: 15/01/2008, 11h16
  3. Passage d'un type procédure en paramètre par défaut
    Par Floverdoz dans le forum Langage
    Réponses: 1
    Dernier message: 22/07/2005, 17h48
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  5. Passer une procédure en paramètre ?
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 12h21

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