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 :

[oracle9i] Peut on afficher une exception dans un curseur?


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut [oracle9i] Peut on afficher une exception dans un curseur?
    bonjour,

    j'ai une procedure simple me permettant d'intervertir deux elements d'une liste. j'appelle cette procedure dans une page aspx ( c#).

    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
    33
    34
    35
    36
    37
    38
    39
    40
     
    procedure swapPosition (idParent in varchar2, idElement in varchar2,currentPosition in varchar2, buttonValue in varchar2, IsResults out rs_rows) is
    -------------------------------------------------------------------------------------
     
    newPosition varchar2(30);
    Noresults varchar2(40);
     
    begin
     
     
    if buttonValue = 'up'then
       newPosition := currentPosition -1;
    else 
       newPosition := currentPosition +1;
    end if;
     
    select dnod_id into results
      from pns_document_relations
      join pns_document_nodes on id = dnod_id
     where dnod_id_parent  = idParent
       and document_position = newPosition
       and dnod_id		  <> idElement;
     
     
    		 update pns_document_relations 
    	        set document_position = newPosition
    	      where dnod_id  		  = IdElement
    	        and dnod_id_parent 	  = idParent ;
     
    		 update pns_document_relations
    			set document_position = currentPosition
    		  where dnod_id           = results
    		    and dnod_id_parent    = idParent; 
     
    exception
    when no_data_found then
    Noresults :=' sorry, but you can not move the item ';
     
     
    end swapPosition;
    en fait si le select ne retourne pas de resultats, l'exception est levee, sinon les deux updates sont executes.

    je voulais savoir si je pouvais afficher le resultat de l'exception dans ma page aspx par le biais du curseur "IsResults". Parce que pour l'instant quand le select ne renvoie pas de ligne, j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-24338: statement handle not executed
    merci pour votre aide, conseils ... ( en esperant ne pas avoir ete trop fouillis dans ma question )
    A++

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Une solution simple serait de transformer ta procédure en fonction, et de renvoyer une valeur en VARCHAR2, qui t'indiquerait si ta MAJ s'est bien passée ou qui retourne le message d'erreur en cas de soucis.

    cf http://sheikyerbouti.developpez.com/...age=Chap4#L4.2
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut
    re,

    merci pour ce conseil, je vais chercher dans cette direction alors.

    encore merci.


    A++

  4. #4
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut
    c encore moi... en fait je voudrais bien une petite aide pour la transformer en fonction cette procedure, parce que ca :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    -------------------------------------------------------------------------------------
    function swapPosition (idParent in varchar2, idElement in varchar2,currentPosition in varchar2, buttonValue in varchar2) return varchar2 is
    -------------------------------------------------------------------------------------
     
    newPosition varchar2(30);
    results number;
    IsResults varchar2(40);
     
    begin
     
     
    if buttonValue = 'up'then
       newPosition := currentPosition -1;
    else 
       newPosition := currentPosition +1;
    end if;
     
    select dnod_id into results
      from pns_document_relations
      join pns_document_nodes on id = dnod_id
     where dnod_id_parent  = idParent
       and document_position = newPosition
       and dnod_id		  <> idElement;
     
     
    		 update pns_document_relations 
    	        set document_position = newPosition
    	      where dnod_id  		  = IdElement
    	        and dnod_id_parent 	  = idParent ;
     
    		 update pns_document_relations
    			set document_position = currentPosition
    		  where dnod_id           = results
    		    and dnod_id_parent    = idParent;
     
    	  IsResults := ' yes you can move';
     
    exception
    when no_data_found then
    IsResults :=' sorry, but you can not move the item ';
     
    return (IsResults);
     
     
     
    end swapPosition;
    comme vous pouvez vous en doutez certainement ne marche pas
    par avance merci pour votre aide

    A++

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Merci de nous aider à t'aider :
    Quel message d'erreur, à quelle ligne ?

    Edit : Tu as un bloc Begin/Exception/End, tu as pensé à faire le "RETURN" dans la section de l'exception, mais pas dans le cas où ça se passe bien ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  6. #6
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut
    desole...

    j'ai rajoute la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     IsResults := ' yes you can move';
    return(IsResults);
    avant l'exception, mais j'ai une erreur c# :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object reference not set to an instance of an object.
    lorsque j'essaye d'afficher le resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Response.Write("what happened : " + dbaccess.Swap_Cmd.Parameters["results"].Value);
    seulement je ne sais pas si c la fonction est juste.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/03/2009, 23h09
  2. Réponses: 2
    Dernier message: 13/05/2008, 17h19
  3. [MFC] afficher une ProgressBar dans une barre d'etat
    Par guillaume21 dans le forum MFC
    Réponses: 5
    Dernier message: 30/03/2007, 11h16
  4. Réponses: 2
    Dernier message: 28/08/2003, 00h00
  5. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18

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