[T-SQL] Prolème de curseur
Bonjour à tous et à toutes!
Objectif: J'effectue une requête, dont le résultat est parcouru par un curseur qui lui même construit une chaîne. Ma procédure doit retourner cette chaine.
Problème: Mes variables ne gardent pas leurs valeurs lors du fetch.
Voici ma procédure stockée en T-SQL:
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
ALTER PROCEDURE [dbo].[ACFY_GetCurseurText]
AS
BEGIN
-- Déclaration du curseur
DECLARE K CURSOR FOR
SELECT adhnom, adhnum, ouvnum, ouvtit
FROM adherents, emprunts, ouvrages
WHERE adhnum = eadhnum
AND ouvnum = eouvnum
ORDER BYadhnum
-- Déclaration des variables et de la table temporaire
DECLARE @ChaineHTML varchar (8000)
DECLARE @adhnom nvarchar (200)
DECLARE @adhnum int
DECLARE @adhnum2 int
DECLARE @ouvnum int
DECLARE @ouvtit nvarchar (200)
OPEN K
--Lecture du premier enregistrement
FETCH K
INTO @adhnom, @adhnum, @ouvnum, @ouvtit
-- Boucle de traitement
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF @ChaineHTML IS NULL
BEGIN
SET @ChaineHTML = CONVERT(nvarchar (200),''+@adhnom+' : <BR>'+@ouvtit+'')
SET @adhnum2 = @adhnum
END
ELSE
BEGIN
IF @adhnum = @adhnum2
BEGIN
SET @ChaineHTML = CONVERT(nvarchar (200),''+@ChaineHTML+'<BR>'+@ouvtit+'')
END
ELSE
BEGIN
SET @ChaineHTML = CONVERT(nvarchar (200),''+@ChaineHTML+'<BR>'+@adhnom+'<BR>'+@ouvtit+'')
SET @adhnum2 = @adhnum
END
END
-- Lecture de l'enregistrement suivant
FETCH K
]INTO @adhnom, @adhnum, @ouvnum, @ouvtit
END
-- Fermeture du curseur
CLOSE K
DEALLOCATE K
RETURN(@ChaineHTML)
END |
Quelqu'un aurait-il une idée du pourquoi ce résultat? Et si possible une solution à mon problème?