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]