Fetch et cursor inside... [ARGH_JEN_PEUX_PLUS_AVEC_LE_SQ L] - SQL/NoSQL - Programmation
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 
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 ...
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]