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 :

Tester une procédure stockée renvoyant un curseur


Sujet :

PL/SQL Oracle

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut Tester une procédure stockée renvoyant un curseur
    Bonjour,

    Je cherche à tester une procédure stockée via un client SQL TOAD en l'occurrence.

    Le problème c'est que ce code ne me renvoie rien du tout :

    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
     
    DECLARE ps_cur sys_refcursor;
     
    auth SCHEMA.AUTHENTIFICATION%ROWTYPE;
    BEGIN
     
    ps_select_test(ps_cur);
     
    LOOP
    	FETCH ps_cur INTO auth;
    	EXIT WHEN ps_cur%NOTFOUND;
    	dbms_output.put_line(auth.COMMENTAIRE);
    END LOOP;
     
    CLOSE ps_cur;
    END;
    Dans la procédure stockée je fais un SELECT * FROM AUTHENTIFICATION.

    En résultat, je ne souhaite qu'afficher que la colonne COMMENTAIRE de ma table AUTHENTIFICATION. Par contre, en exécutant cette procédure via mon client TOAD, je n'obtiens rien en retour.

    Comment cela se fait-il ?

    Merci pour toute info complémentaire.

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    As-tu activé dbms output ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Merci pour ta réponse.

    Non, comment je fais pour l'activer ?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    dans sql*plus

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Par rapport au code ci-dessus, où je dois placer cette instruction ?

    J'obtiens l'erreur "ORA-00922 missing or invalide operation" lorsque je place cela à ce niveau :

    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 dbms_output ON;
    DECLARE ps_cur sys_refcursor;
     
    auth SCHEMA.AUTHENTIFICATION%ROWTYPE;
    BEGIN
     
    ps_select_test(ps_cur);
     
    LOOP
    	FETCH ps_cur INTO auth;
    	EXIT WHEN ps_cur%NOTFOUND;
    	dbms_output.put_line(auth.COMMENTAIRE);
    END LOOP;
     
    CLOSE ps_cur;
    END;
    Faut-il déclarer la variable "dbms_output" quelque part ?
    Merci d'avance.

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    remplace :
    par :

    par ailleurs, pour déclarer un curseur il faut y mettre une requête et si tu as un paramètre il faut aussi le déclarer dans le curseur... revois le tutoriel PL/SQL avant de continuer

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Merci pour ta réponse mais ne donne rien mais la même erreur :
    "ORA-00922 missing or invalide operation"

    Enfin, ma procédure ne renvoie qu'un seul paramètre en sortie, un curseur en l'occurrence donc je n'ai qu'un curseur à déclarer en sortie.

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Si c'est dans toad, va ds le menu view->dbms_output et tu l'actives.

  9. #9
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    evidemment si t'as corrigé que ça, ça marchera pas mieux

    recherche sys_refcursor dans le forum pour comprendre ton erreur

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Par défaut
    Oui effectivement c'est dans l'onglet "dbms_output", je n'ai pas l'habitude de TOAD.

    Merci.

  11. #11
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Bonjour,

    Désolé si je ne poste pas au bon endroit mais je n'ai pas trouvé mieu.

    Je débute en PL/SQL et j'ai un petit problème...

    Je voudrais afficher quelque chose suite à une requéte mais cela me ressort une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SET SERVEROUTPUT ON
    BEGIN
     
    	DBMS_OUTPUT.PUT_LINE('A = ');
     
     
    END;
    Je pense que je n'ai pas le package mais je ne sais pas comment l'installer.

    Pour info je travail sous la version oracle Database 10g express edition.

    Merci d'avance

  12. #12
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par macpie Voir le message
    Je voudrais afficher quelque chose suite à une requéte mais cela me ressort une erreur
    Le but du jeu c'est qu'on devine de quelle erreur il s'agit ?

  13. #13
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Désolé voici l'erreur:

    ORA-06550: Ligne 3, colonne 5 : PL/SQL: ORA-00922: option erronée ou absente ORA-06550: Ligne 3, colonne 1 : PL/SQL: SQL Statement ignored ORA-06550: Ligne 10, colonne 1 : PLS-00103: Symbole "END" rencontré à la place d'un des symboles suivants : begin function package pragma procedure form

  14. #14
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Tu exécutes ton code à partir de quel outil ? SQL*Plus ?

  15. #15
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Oui, mais j'ai trouvé la solution d'envoyer les données dans une table tamporaire et d'afficher la table.

    Merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/03/2015, 16h21
  2. Réponses: 6
    Dernier message: 05/04/2007, 14h35
  3. Appel d'une procédure stockée avec un curseur
    Par lapanne dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/12/2006, 17h24
  4. Réponses: 3
    Dernier message: 14/09/2006, 09h44
  5. Réponses: 6
    Dernier message: 18/05/2005, 15h04

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