Bonjour à tous !

Pour un système de pagination (simulation de la clause LIMIT), je dois pouvoir inverser un enchainement de tri encodé directement sous forme de chaîne de caractère (par exemple : 'field1, field2 DESC, field3 ASC' devient 'field1 DESC, field2 ASC, field3 DESC').
Pour cela j'ai créer une procédure qui me SPLIT un texte

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
 
ALTER  PROCEDURE dbo.Split 
	@text AS NVARCHAR(4000),
	@marqueur AS NVARCHAR(4000)
AS
	DECLARE @indexOf AS INT
	DECLARE @result AS NVARCHAR(4000)
	DECLARE @counter AS INT
 
	SET @counter = 1
	SET @result = ''
	WHILE LEN(@text) > 0
	BEGIN
		IF LEN(@result) > 0
		BEGIN
			SET @result = @result + ', '
		END
 
		SET @indexOf = PATINDEX('%' + @marqueur + '%', @text)
		IF @indexOf > 0
		BEGIN
			SET @result = @result + '''' + LTRIM(RTRIM(SUBSTRING(@text, 1, @indexOf-1))) + ''' AS c' + CAST(@counter AS NVARCHAR(256))
			SET @text = SUBSTRING(@text, @indexOf+1, LEN(@text)-@indexOf)
		END
		ELSE
		BEGIN
			SET @result = @result + '''' + LTRIM(RTRIM(@text)) + ''' AS c' + CAST(@counter AS NVARCHAR(256))
			BREAK
		END
 
		SET @counter = @counter + 1
	END
	EXEC('SELECT ' + @result)
 
GO
Je suis content j'ai la ch'tite procédure que je voulais, mais je ne sais pas l'utiliser !! Je ne sais pas comment faire pour parcourir un résultat avec un nombre variable de colonnes !

Merci d'avance de votre aide !

@++

NeoMan