[ARGH_JEN_PEUX_PLUS_AVEC_LE_SQ L]Fetch et cursor inside...

Fetch et cursor inside... [ARGH_JEN_PEUX_PLUS_AVEC_LE_SQ L] - SQL/NoSQL - Programmation

Marsh Posté le 22-05-2002 à 12:53:58    

Quelqu'un peut il me dire si la syntaxe est bonne ...
 
je me retrouve dans une boucle sans fin à chaque fois que je l'éxécute ...PLEASE HELP ...merci  
 
If Exists ( select * from sysobjects where type = ¨P' and name = 'SP_UPD_ANOMALIE_HIST'
Begin
 Drop Proc SP_UPD_ANOMALIE_HIST
End
 
Create Procedure SPUPDANOMALIEHIST(@oldversion varchar(20), @newversion varchar(20)) as
 
 Begin
  declare curseur_anomalie_hist cursor for
  select
   NOSEQ,
   NOVERCO,
   MULTIBGVRS
  from ANOMALIEHIST
 
  declare @noseq numeric(4)
  declare @noverco numeric(3)
  declare @multibg varchar(255)
 
  open curseuranomaliehist
 
  fetch curseuranomaliehist into @noseq, @noverco,  
  @multibg
 
  if (@@sqlstatus = 2)
  Begin
   Return 1
  End
 
  While (@@sqlstatus = 0)
  Begin
   update ANOMALIEHIST
   set MULTIBGVRS = ( select stuff(( select MULTIBGVRS
        from ANOMALIEHIST
        where NOSEQ = @noseq and
        NOVERCO = @noverco),
       ( select patindex ('%' + @oldversion + '%',MULTIBGVRS)
        from ANOMALIEHIST
        where NOSEQ = @noseq and NOVERCO = @noverco),
         charlength(@oldversion),
         @newversion))
 End
 
 close curseuranomaliehist
 Return 1
End
 
 
Je veux donc pour chaque champ de la colonne MULTIBGVRS que si on trouve la chaine @oldversion, on la remplace par @newversion et on passe a la ligne suivante.
 
Merci pour votre aide !!!

 

[jfdsdjhfuetppo]--Message édité par paranoidandroid le 22-05-2002 à 12:55:31--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 22-05-2002 à 12:53:58   

Reply

Marsh Posté le 22-05-2002 à 13:18:24    

sais-tu a quel niveau ca se bloque???

Reply

Marsh Posté le 22-05-2002 à 13:21:11    

jeanphi80 a écrit a écrit :

sais-tu a quel niveau ca se bloque???  




 
Ben c'est bon ça marche ..j'avais tout bêtement oublié de lui induiquer de passer à la ligne suivante ...
 
forcément ...
 
 
 
Corrigé ça donne ça :
 
If Exists ( select * from sysobjects where type = ¨P' and name = 'SP_UPD_ANOMALIE_HIST'  
Begin  
Drop Proc SP_UPD_ANOMALIE_HIST  
End  
 
Create Procedure SPUPDANOMALIEHIST(@oldversion varchar(20), @newversion varchar(20)) as  
 
Begin  
 declare curseur_anomalie_hist cursor for  
 select  
  NOSEQ,  
  NOVERCO,  
  MULTIBGVRS  
 from ANOMALIEHIST  
 
 declare @noseq numeric(4)  
 declare @noverco numeric(3)  
 declare @multibg varchar(255)  
 
 open curseuranomaliehist  
 
 fetch curseuranomaliehist into @noseq, @noverco,  
 @multibg  
 
 if (@@sqlstatus = 2)  
 Begin  
  Return 1  
 End  
 
 While (@@sqlstatus = 0)  
 Begin  
  update ANOMALIEHIST  
  set MULTIBGVRS = ( select stuff(( select MULTIBGVRS  
       from ANOMALIEHIST  
       where NOSEQ = @noseq and  
       NOVERCO = @noverco),  
      ( select patindex ('%' + @oldversion + '%',MULTIBGVRS)  
       from ANOMALIEHIST  
       where NOSEQ = @noseq and NOVERCO = @noverco),  
        charlength(@oldversion),  
        @newversion))
 
fetch curseuranomaliehist into @noseq, @noverco, @multibg
End  
 
close curseuranomaliehist  
Return 1  
End  
 
 
 
Ouf

Reply

Marsh Posté le 22-05-2002 à 13:22:03    

Ne pas tenir comptes de certaines erreur de libellés ... Lors d'un copier collé tous les underscores ont disparus ... je ne sais pas pkoi ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed