Bonjour à tous,
je viens de lire le très bon article intitulé "Petit guide de Transact SQL".
http://brouardf.club.fr/SQL/TransactSQL/SQL_MSTransactSQL.html
J'aurai 2 petites questions particulières à posés par rapport à une astuce au début de cet article :
ASTUCE : si vous désirez concaténer toutes les valeurs d'une colonne dans une seule variable, vous pouvez utiliser la construction suivante :
DECLARE @Colonne varchar(8000)
SET @Colonne = ''
SELECT @Colonne = @Colonne +COALESCE(TABLE_NAME + ', ', '')
FROM INFORMATION_SCHEMA.TABLES
1ere question :
J'ai du mal à comprendre comment se fait le mécanisme de récursivité permettant de construire la concaténation recherchée.
J'ai émis l'hypothèse d'une sorte de mécanisme de curseur sous-jascent ou bien d'une sorte de renvoie d'une table de type :
1ere ligne table_name_1
2e ligne table_name_1+table_name_2
...
dernière ligne table_name_1+table_name_2+...+table_name_n
à partir de laquelle on ne recupérerai que la dernière valeur comme pour une affectation classique par select.
Qu'en est-il réellement?
2e question :
J'ai testé ce code sous sybase ASE 12.5 (sur la table sysobjects, et sa colonne name) et j'obtiens seulement la valeur de la dernière ligne dans @colonne au lieu de la concaténation de toute les valeurs de la colonne. Il se comporte comme une affectation classique par select.
J'ai pu tester également ce code tel quel sous MS sqlserver 2000 et là il marche tout à fait.
Ma 2e question est la suivante : existe t'il une astuce similaire qui marcherait sur sybase?
Merci d'avance.
Partager