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 :

Utilisation de NOWAIT dans une clause FOR UPDATE


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Utilisation de NOWAIT dans une clause FOR UPDATE
    Bonjour à tous

    J'utilise un curseur pour effecture des Delete sur une table de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE
    	   CURSOR cur_regleepar IS
    	   select RP.* from regleepar RP, facture F 
    	   where RP.numfac=F.numfac 
    	   and F.numlot IN (SELECT numlotemi FROM emisorg_tmp)
    	   FOR UPDATE NOWAIT;
    BEGIN
    	 FOR cur_reg IN cur_regleepar LOOP
    	 	 DELETE regleepar
    		 WHERE CURRENT OF cur_regleepar;
    	 END LOOP;
    END;
    Tel quel, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PLS-00404: cursor 'CUR_REGLEEPAR' must be declared with FOR UPDATE to use with CURRENT OF
    ORA-06550: line 11, column 5:
    Par contre, si je retire le NOWAIT de la clause FOR UPDATE, je n'ai pas d'erreur et tout fonctionne. Je n'ai pas trouvé d'explication à ce comportement, ni dans mes bouquins ni dans la doc oracle.
    Pour info : oracle 8.0.5

    Phig

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... FOR UPDATE OF rp.numfac NOWAIT
    devrait fonctionner

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Ah ok,
    c'est à cause de la jointure dans le curseur. Il faut que je spécifie quelle table je dois utiliser pour le for update.
    En tout cas ça marche.
    Merci beaucoup

    Phig

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    c'est exactement cela !!!

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

Discussions similaires

  1. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  2. Utilisation des index (dans une clause WHERE)
    Par Jean-Jacques Engels dans le forum Langage SQL
    Réponses: 12
    Dernier message: 01/02/2012, 11h15
  3. [Débutant] utilisation des Textbox dans une boucle For
    Par zayoub dans le forum VB.NET
    Réponses: 31
    Dernier message: 28/07/2011, 15h55
  4. Utiliser un pas dans une boucle For .. to .. do
    Par colorid dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2009, 11h09
  5. [SQL2K][TSQL] Peut-on utiliser un alias dans une clause Where ?
    Par StormimOn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/05/2006, 09h25

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