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

Sybase Discussion :

[TSQL]Questions sur une astuce du "Petit guide de T-Sql


Sujet :

Sybase

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [TSQL]Questions sur une astuce du "Petit guide de T-Sql
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Effectivement,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE @Colonne varchar(8000)
    SET @Colonne = ''
    SELECT @Colonne = @Colonne +COALESCE(name + ', ', '')
    FROM sysobjects 
    where type IN ('U','S')
    si cela ne marche pas, il vous faudra passer par un cusreur
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Oui, c'est bien ce qu'il me semblait.

    Mais je me demandais si une astuce de même type existait sous sybase et surtout quel etait la logique qui etait en oeuvre derriere ce bout de code

    voilà voilà

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Sous MS-SQL, c'est effectivement un curseur implicite.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    merci pour la réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WS 2003] Petite question sur une GPO
    Par Damzz dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 01/11/2010, 09h24
  2. Petite question sur une requete
    Par dam28800 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 16/02/2010, 09h30
  3. [MySQL] Petite question sur une erreur de mysql
    Par iwf-fr dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/12/2006, 16h23
  4. Petite question sur une IHM
    Par beb30 dans le forum MFC
    Réponses: 12
    Dernier message: 10/04/2006, 15h19
  5. [jdbc] question sur une connection
    Par berg dans le forum JDBC
    Réponses: 2
    Dernier message: 10/09/2005, 08h29

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