Bonjour à tous,

Je ne suis pas habitué au T-SQL, mais j'essai de réaliser la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
CREATE FUNCTION ConcatColV2 
(@id VARCHAR(MAX), @idCol VARCHAR(MAX), @toto VARCHAR(MAX), @ResultCol VARCHAR(MAX))
 
RETURNS VARCHAR(MAX)
AS
BEGIN
	-- Declare the return variable here
 
	DECLARE 
		@SQL VARCHAR(MAX),
		@tmp VARCHAR(MAX),
		@Result VARCHAR(MAX)
	DECLARE
		myCursor CURSOR
		FOR
 
			SELECT @ResultCol
			FROM @toto
			WHERE @idCol = ' = ''' + @id + ''''
 
	-- ouverture du curseur
	OPEN mycusor
 
	-- lecture de la première ligne
	FETCH myCursor INTO @tmp
	SET @Result = @tmp
 
	-- boucle ligne à ligne
	WHILE @@FETCH_STATUS = 0
	BEGIN
	   FETCH myCursor INTO @tmp
	   set @Result = @Result + ', ' + @tmp
	END
 
	-- fermeture et désallocation d'espace mémoire du curseur
	CLOSE myCursor
	DEALLOCATE myCursor
 
	-- Return the result of the function
	RETURN @Result
 
END
Elle doit permettre de 'concaténer' une colonne de résultat dans un VARCHAR.

Seulement voila quand je l’exécute j’obtiens le message d'erreur suivant :
"Msg 1087, Level 16, State 1, Procedure ConcatResult, Line 23
Must declare the table variable "@toto"."

Quelqu'un pourrai m'expliquer mon problème svp?

Merci d'avance