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 :

Retourne même valeur


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut Retourne même valeur
    Bonsoir,

    Je viens vers vous pour vous faire part d'une erreur pénible : j'ai tout une colonne qui se rempli d'une même fausse valeur. Comme vous, je pensais que ça venait d'un problème de type.
    Seul hic: toutes les variables appelées ici ont le même type : c'est-à-dire number.
    Pouvez-vous m'aider?

    Le code est chargé de calculer l'écart entre le nombre de réponse type à un questionnaire de hasard parmi mille répondants et le nombre de réponse réelle des répondants. Celui qui a le plus faible écart est premier.
    Voici mon code :
    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 CALCULER_ECART (P_NB_REP_TYPE IN number) AS
    cursor cur is select * from bons_bons;
    V_ecart number;
    BEGIN
      for bon in cur loop
        V_ecart :=  P_NB_REP_TYPE - bon.rep2;
      end loop;
     
      update bons_bons set ecart =V_ecart;
    END CALCULER_ECART;

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Bonjour,

    C'est votre algorithme qui est erroné.

    Je suppose que le nombre de réponse réel est dans le champ rep2 et que le nombre de réponse type est dans P_NB_REP_TYPE.

    Vous affectez successivement chaque écart à la même variable v_ecart.
    En sortie de boucle loop v_ecart contient l'écart pour la dernière ligne de bons_bons.
    Ensuite vous mettez à jour TOUTE la table bons_bons avec cette valeur puisque qu'il n'y a pas de clause where à votre update. Donc tout le monde a l'écart du dernier.

    Si vous voulez utiliser du PlSql et une boucle il faut mettre à jour la table bons_bons à chaque tour de boucle à l'intérieur du loop, en utilisant une clé unique de la table bons_bons si elle en a une. En a-t-elle une ?

    Mais pour votre problème vous n'avez pas besoin d'une boucle.
    Un simple update sur la table suffit.

    Pozzo

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Pozzo Voir le message
    Si vous voulez utiliser du PlSql et une boucle il faut mettre à jour la table bons_bons à chaque tour de boucle à l'intérieur du loop, en utilisant une clé unique de la table bons_bons si elle en a une. En a-t-elle une ?
    Tu n'es pas obligé d'avoir une PK pour faire l'update, avec current of
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE
    Cursor C is SELECT * FROM BONS FOR UPDATE;
    BEGIN
    FOR r IN C LOOP
    UPDATE BONS SET col1 = col2
    WHERE current of c;
    END LOOP;
    END;

Discussions similaires

  1. Sous-requête qui retourne les mêmes valeurs
    Par messi1987 dans le forum Développement
    Réponses: 5
    Dernier message: 23/09/2014, 19h22
  2. Réponses: 2
    Dernier message: 27/06/2014, 14h58
  3. Réponses: 4
    Dernier message: 13/03/2011, 14h41
  4. getSelectedItem me retourne toujours la même valeur
    Par une_tite_question dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/06/2008, 13h49
  5. Mes boutons radio me retournes tous la même valeur (1)
    Par MikeV dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/01/2008, 16h47

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