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 :

ORA 01001 invalid cursor


Sujet :

Oracle

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut ORA 01001 invalid cursor
    J'ai l'erreur suivante quand j'execute ma procedure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ORA-01001: invalid cursor
    ORA-06512: at "LOG_ERROR", line 7
    ORA-06512: at "RD", line 36
    ORA-01001: invalid cursor
    ORA-06512: at line 2
    Voici ma procédure:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
      procedure send_exp is
       CURSOR cur IS
      select * from A_STREAM where stream_type='exp' and result=0 FOR UPDATE;
     
       return_txt varchar2(32767);
       return_code integer;
       ligne varchar2(32767);
       EMAIL varchar2(255);
     
      begin
     
      EMAIL:=tools.env('EMAIL');
     
      for c in cur
      loop
          LIGNE:='<table>';
          LIGNE:= LIGNE||'<tr><td > Commande <b>'||c.KEY1||' </b></td><td></td><td></td><td></td><td></td><td></td></tr>';
        for c2 in (select fd._NUMBER, fd.QUANTITY, fd.CODE, fd.PRODUCT, fd.COLOR, fd.SIZE, fd.DATE from D_FORWARD f, D_FORWARD_DETAIL fd  
    	           where f.FORWARDING_NUMBER=c.KEY1 and  f.FORWARDING_NUMBER=fd.FORWARDING_NUMBER)
    	loop
           LIGNE:= LIGNE||'<tr><td></td><td> Colis n° '||c2.NACKLACE_NUMBER||'</td><td> Quantité : '||c2.ORDERED_QUANTITY||'</td><td> produit : '||c2.PRODUCT_ID||'</td><td> Couleur  : '||c2.COLOR||'</td><td> Taille : '||c2.SIZE||'</td><td> Date envoi : '||c2.DATE||'</td></tr>';
    	   UPDATE A_STREAM SET result=1 WHERE CURRENT OF cur;
    	end loop;	 
      end loop;
      LIGNE:=LIGNE||'</table>';
        Stream.post(return_txt
    		,return_code
    					,'MAIL=exp&EMAIL='||EMAIL||'&LNG=fr&_VAR1='||LIGNE
    	,'http://mail.php');
    	LOG_ERROR ('exp', 'fr', 'OK' , ' ' , return_code , return_txt, 'ERR');
        end;
    je ne vois vraiment pas d'ou cela peut venir...

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Apparemment cela viendrait de la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LOG_ERROR ('exp', 'fr', 'OK' , ' ' , return_code , return_txt, 'ERR');

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    Tu veux dire que quand tu supprime cette ligne ta procédure fonctionne ?

    PS : LOG_ERROR c'est une fonction ou une procédure ?

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Oui quand je supprime cette ligne, ma procédure fonctionne:
    La voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE OR REPLACE PROCEDURE Log_Error (v_PROG VARCHAR2, v_KEY1 VARCHAR2, 
                                           v_KEY2  VARCHAR2, v_PROG_DESC  VARCHAR2, 
    									   v_ORACLE_NUM  VARCHAR2, v_ORACLE_DESC VARCHAR2, 
    									   v_ERROR_TYPE VARCHAR2) IS
     
    BEGIN
       INSERT INTO ERROR (ERROR_ID, PROG, KEY1, KEY2, ERROR_DATE, PROG_DESC, ORACLE_NUM, ORACLE_DESC, ERROR_TYPE) 
       VALUES (S_A_ERROR.NEXTVAL, v_PROG, DECODE(v_KEY1,NULL,' ',v_KEY1), DECODE(v_KEY2,NULL,' ',v_KEY2), SYSDATE() , v_PROG_DESC, v_ORACLE_NUM, v_ORACLE_DESC, v_ERROR_TYPE);
       END Log_Error;
    /

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    pourtant le problème semble venir de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CURSOR cur IS
      select * from A_STREAM where stream_type='exp' and result=0 FOR UPDATE;
    selon le message

    La requête fonctionne sous SQL*Plus ?

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    oui elle fonctionne

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est quoi ça : SYSDATE()

    il n'y a pas de parenthése normalement

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Bon c'est la fin de la semaine ... et quelquechose m'échape donc au lieu de rester bête pendant mes vacances qui arrivent je pose ma question :

    Comment sont initialiser les variables return_code et return_txt ?

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Ah oui je n'avais pas vu...
    en effet c'est du a cela car cela fonctionne maintenant...

  10. #10
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Et pourquoi ne pas avoir directement cherché à la ligne 7 de la procédure LOG_ERROR ? enfin je dit ça juste parceque c'est ce qui était indiqué dans la pile d'erreur oracle....

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Arrivé après la guerre, c'est arrivé trop tard !!!

    Un petit tag résolu non ?

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

Discussions similaires

  1. ORA-01001 : invalid cursor avec Iterator
    Par Tora21 dans le forum JDBC
    Réponses: 7
    Dernier message: 29/06/2011, 12h43
  2. [Oracle] ORA-01001: invalid cursor in
    Par aphp1 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/12/2008, 09h25
  3. ORA-01001: invalid cursor
    Par LP-mpascolo dans le forum Administration
    Réponses: 10
    Dernier message: 12/10/2007, 09h50
  4. curseur invalid ora-01001
    Par couse1 dans le forum SQL
    Réponses: 4
    Dernier message: 13/07/2007, 09h37
  5. ora-01001 : invalid cursor
    Par sherdogvdb dans le forum Oracle
    Réponses: 1
    Dernier message: 02/03/2007, 12h36

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