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 :

update et curseur


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Par défaut update et curseur
    Bonjour,

    J'ai un petit problème sur une procédure PL/SQL. Je créé tout d'abord un curseur qui parcourt une table. Au fur et à mesure j'update des valeurs de cette table.
    Et là ! surprise ! je m'apperçois que certaines lignes (quelques unes seulement ) ne sont pas updatée !

    Quelqu'un a t-il déja rencontré ce problème ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    quel est le squelette de votre PL/SQL ? (pas tout le code dans un premier temps ) ?

    committez-vous ? comment sont gérées les exceptions ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Par défaut
    voici le squelette du code (j'ai enlevé toutes les conditions pour l'update pour simplifier)
    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
     
    create or replace procedure SR_FORM(s_pays IN varchar2) is
    	begin
    		declare
    		       cursor cur_sect is select so0.nrid, code_post, societe, var12, var17 from so0 
    		       where var11=s_pays and societe like 'WEST%' and template is null;
    		       code               varchar(10);
    		       soc                varchar(100);
    		       old_sect           varchar(30);
    		       comte              varchar(100);
    		       new_sect           varchar(30):= '';
    		       v_nrid             number(15);
    		       v_rid              varchar2(32);
    		       v_rmod             varchar2(32);
    		       v_dmod             date;
    		       v_so0_nrid         number(15);
    		begin
    		  open cur_sect;
    		  loop
    		     exit when (cur_sect%NOTFOUND);
    		     fetch cur_sect into v_so0_nrid, code, soc, comte, old_sect;
    		     begin
     
    				 update so0 set var17=new_sect, dmod=v_dmod, rmod=v_rmod where nrid=v_so0_nrid;
    				 end;
    		  end loop;
    		  close cur_sect;
    		end;
    		 commit;
    	end SR_FORM;

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Par défaut
    t'en est sûr que ces lignes repondent à la clause where de l'update ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Par défaut
    Les variables dans la condition de mon update sont initialisées grace à mon curseur.

    Donc oui je suis sur que les lignes du curseurs repondent à la clause where de l'update.

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    tu n'aurais pas des variables locales portant le même nom que certaines colonnes de ta table par hasard ?

    Remarque: j'ai l'impression que le curseur "FOR UPDATE" serait plus adapté à ton besoin...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Par défaut
    J'ai déjà entendu parlé du FOR UPDATE sur un curseur mais comment ça marche ?

Discussions similaires

  1. 2 update avec un curseur probleme
    Par loupin dans le forum SQL
    Réponses: 3
    Dernier message: 03/09/2007, 12h05
  2. Utilisation d'un curseur en for update.
    Par macben dans le forum SQL
    Réponses: 4
    Dernier message: 30/08/2007, 08h53
  3. procedure curseur et update
    Par bibi_forever dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 13/06/2007, 15h43
  4. Réponses: 7
    Dernier message: 06/09/2006, 15h18
  5. Formulation d'un UPDATE (pour éviter un curseur)
    Par GoLDoZ dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2005, 16h35

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