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 :

[Oracle 8i][PL/SQL] Curseur non valide


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut [Oracle 8i][PL/SQL] Curseur non valide
    Bonjour à toutes et à tous.

    J'ai un curseur basé sur la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT UnParam
    FROM MaTable mt
    WHERE mt.Param1 = 12
    AND TRUNC(mt.ParamDateTime) = TRUNC(VariableDateTime);
    Et le code me sort une erreur du type

    Je ne comprends pas ce qui ne va pas dans cette requête. Enfin, en fait, si je pense voir car lorsque j'essaie d'exécuter une telle requete avec des valeurs numériques, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Types de données incohérents
    Mais dans ce cas, comment faire une égalité de données de type datetime uniquement sur leur partie date ?

    Bahan

  2. #2
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut
    Je me demande si je ne manque pas en fait d'informations.

    J'utilise SQLERRM pour afficher le texte de l'erreur. Comment puis-je être sur que cela m'affiche vraiment l'ensemble du message d'erreur, car juste "CURSEUR invalide", je trouve cela un peu light .

    Merci d'avance et au secours .

    Bon a priori quand je refais la requête ci-dessus avec des données, cela marche parfaitement bien. Donc je ne vois vraiment pas pourquoi il me fait un caca nerveux là .

    Bahan

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Et si vous nous donniez votre code, le type des variables de votre table, les valeurs que vous substituez dynamiquement à l'exécution, etc. ?

  4. #4
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut
    J'aurais peut-être du faire ça mais d'après ce que je vois maintenant, j'ai cette erreur pour chacun de mes curseurs

    Voilà un exemple de mes curseurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CURSOR cMonCurseur
    IS
    SELECT
          mt.MonChamp1 -- number
        , mt.MonChamp2 -- number
        , mt.MonChamp3 -- date
        , mt.MonChamp4 -- number
        , mt.MonChamp5 -- number
    FROM MaTable mt
    WHERE mt.MonChamp6 = 0 -- number
    ORDER BY mt.MonChamp1 ASC;
    Ensuite j'appelle mon curseur de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    OPEN cMonCurseur;
    LOOP
        FETCH cMonCurseur INTO vMonCurseur;
        EXIT WHEN cMonCurseur%NOTFOUND;
     
        -- Mon Traitement --
     
    END LOOP;
    CLOSE cMonCurseur;
    je vois pas ce qui ne va pas

    Edit : ah ben visiblement c'est quand mon curseur ne rapport aucune donnée que cela me fait le coup... Pourtant j'ai bien mis le EXIT pour pallier à ce problème non ? Comment faire sinon pour éviter cette erreur ?

    Bahan

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    l'erreur se situe sur quelle ligne ?

  6. #6
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut
    Et bien ma foi, je ne sais même pas comment faire pour afficher la ligne . Il y a une variable pour ça ? Logiquement dans SQLERRM, il devrait me donner toutes les infos sur l'erreur non ?

    Par contre j'ai localisé l'erreur, elle se situe quand je sors de mon curseur au niveau du EXIT WHEN cMonCursor%NOTFOUND.

    Après la raison, aucune idée... Je sens que je vais me pendre...

    Bahan

  7. #7
    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
    pour pallier le problème c'est une EXCEPTION NO_DATA_FOUND qu'il faut mettre

  8. #8
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut
    Mais je ne veux pas sortir en erreur moi, je veux parcourir mon curseur et une fois ceci fait continuer tranquillou mon code.

    Est-ce possible de faire cela ?

    En fait là qu'est-ce qu'il se passe au juste ? Il lit le curseur select puis il sort du curseur (grâce au exit) et lève l'exception OTHERS ? Mais pourquoi diable ?

    Bahan

  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
    oui, tu mets ton SELECT dans un bloc BEGIN/END et gestion d'exception... si il y a une erreur tu vas au bloc exception le plus proche et tu continues tranquillou

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

Discussions similaires

  1. [JDBC-ODBC] Etat de curseur non valide
    Par I o dans le forum JDBC
    Réponses: 7
    Dernier message: 04/05/2015, 12h22
  2. [PL/SQL] ORA-01001: curseur non valide
    Par sider_winder dans le forum SQL
    Réponses: 1
    Dernier message: 03/05/2007, 09h37
  3. [JDBC][SQLException] Etat de curseur non valide
    Par chti_juanito dans le forum JDBC
    Réponses: 7
    Dernier message: 03/11/2005, 20h13
  4. [JDBC] état de curseur non valide ?
    Par Hydre dans le forum JDBC
    Réponses: 9
    Dernier message: 03/10/2005, 14h03
  5. [JSP] Erreur Etat de curseur non valide
    Par logica dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/05/2005, 14h42

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