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 :

Ref Cursor + sql dynamique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut Ref Cursor + sql dynamique
    Bonjour a vous tous,

    Je travaille avec une base de donnée oracle 9i (release 9.2.0.1.0).

    Le travail que je dois faire est le suivant :

    J’ai plusieurs procédures dans mon schéma.

    Voici un exemple de ses procédures (Pour fin d’exemple j’ai réduit au minimum le code de la procédure)

    CREATE OR REPLACE PROCEDURE TEST_PRC_RETURN_CURSOR (resultset IN OUT sys_refcursor)
    IS
    BEGIN
    OPEN resultset FOR 'SELECT 1 from dual';
    EXCEPTION
    WHEN OTHERS
    THEN
    dbms_output.put_line(sqlcode || ' ' || substr(sqlerrm,1,200));
    END;

    Toutes les procédures retournent un curseur (sys_refcursor) .

    Chaque nom de procédure est conservé dans une table oracle.

    Selon certain critères de sélection je dois lire le nom de la procédure dans la table et exécuter cette procédure.

    Pour la lecture de la table je n’ai aucun problème.

    J’ai un problème avec l’exécution de la procédure

    Voici mon programme que j’utilise pour exécuter la procédure :

    CREATE OR REPLACE PROCEDURE test3
    IS
    lc_curseur sys_refcursor;
    L_dummy integer;
    BEGIN

    execute immediate ('begin TEST_PRC_RETURN_CURSOR(:t); end;') using IN OUT lc_curseur;

    LOOP
    FETCH lc_curseur
    INTO l_dummy;
    EXIT WHEN lc_curseur%NOTFOUND;
    DBMS_OUTPUT.put_line ( l_dummy );
    END LOOP;
    EXCEPTION
    WHEN OTHERS
    THEN
    dbms_output.put_line(sqlcode || ' ' || substr(sqlerrm,1,200));
    END ;

    --------------

    TEST_PRC_RETURN_CURSOR est le nom de la procédure qui a été lui dans la table oracle.

    Lorsque je déclenche la procédure TEST3, la procédure qui est appelé

    Dynamiquement gèle. On dirait que TEST3 roule dans le vide et il ne me donne aucune erreur.

    J’ai fait l’essaie de changer les procédures en fonction j’ai le même problème.

    Malheureusement je n’ai pas accès au log d’oracle.

    Y-a-t-il quelqu’un qui a vu un problème semblable et qui aurait une solution a mon problème.

    Merci de prendre de votre temps pour résoudre mon problème

  2. #2
    Expert confirmé 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
    Par défaut
    En testant ton code en Oracle 9 j'ai une erreur méchante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ERREUR à la ligne 1 :
    ORA-03113: fin de fichier sur canal de communication
    Ce code s'exécute correctement en Oracel 10xe.
    Ce code s'exécute correctement aussi en Oracle 9 si tu remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    execute immediate ('begin TEST_PRC_RETURN_CURSOR(:t); end;') using IN OUT lc_curseur;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TEST_PRC_RETURN_CURSOR(lc_curseur);
    mais je ne suis pas sur que ça te convient.

    Donc je pense qu'il y a un Pb en oracle 9. Essaye de vérifier en te connectant sur Oracle Metalink.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    Merci pour ta réponse. Effectivement c'est un bug oracle(BUG 2709343) qui a été corriger dans la version 10. J'ai fait rapport a mes supérieurs nous sommes en processus pour aller vers la version 10

    Je te remercie pour ton aide

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

Discussions similaires

  1. [CR XI] Parametre dynamique & ref cursor
    Par anthony.44 dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 04/02/2011, 21h13
  2. pb cursor sql dynamique
    Par ouinih dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/04/2008, 11h17
  3. REF CURSOR et requête dynamique
    Par muchmorehuman dans le forum SQL
    Réponses: 5
    Dernier message: 08/02/2008, 14h27
  4. [PL/SQL] Ref Cursor
    Par duboisfa dans le forum Oracle
    Réponses: 1
    Dernier message: 24/02/2006, 16h15
  5. REF CURSOR... Comment ça marche ?
    Par Patkaza dans le forum SQL
    Réponses: 6
    Dernier message: 28/04/2004, 14h26

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