IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[T-SQL] Connaître le nombre de colonnes retourner par une PS


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Points : 76
    Points
    76
    Par défaut [T-SQL] Connaître le nombre de colonnes retourner par une PS
    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

  2. #2
    Membre habitué
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Points : 151
    Points
    151
    Par défaut
    salut.
    Tu voudras bien préciser ta question.

  3. #3
    Membre régulier Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Points : 76
    Points
    76
    Par défaut
    Bien j'avoue que je ne vois pas comment préciser d'avantage...
    J'ai une procédure stockée A qui retourne une table ayant un nombre de colonne non déterminée à l'avance (en fonction des paramètres transmis).
    J'ai une seconde procédure stockée B qui appelle A et en analyse les informations de retour. Aussi pour cela il est nécessaire dans B de connaître le nombre de colonne retourné par A.
    D'où la question :

    En T-SQL, comment connaître le nombre de colonnes retourner par une procédure stockée ?

    J'espère avoir été plus clair...

    @++

    NeoMan

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 938
    Points : 51 773
    Points
    51 773
    Billets dans le blog
    6
    Par défaut
    Si vous utilisez du SQL dynamique cela n'est pas possible en transact SQL. En revanche vous pouvez le faire dans un L4G.

    A +

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/07/2011, 11h05
  2. Nombre de rows retournés par une requète
    Par awalter1 dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 03/07/2008, 10h17
  3. Réponses: 7
    Dernier message: 19/06/2008, 09h17
  4. Réponses: 2
    Dernier message: 17/04/2008, 12h16
  5. [HQL] Nombre de colonnes retourné par une requête
    Par Fr@ncky dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/07/2007, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo