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 :

[T-SQL]sp_help + champs indexé


Sujet :

Sybase

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 293
    Points : 182
    Points
    182
    Par défaut [T-SQL]sp_help + champs indexé
    Bonjour a tous,
    Je me demandais dans quel table system est écrit les champs indexé par nom d'index.
    J'ai cherché dans sysobjects et sysindexes mais j'ai pas trouvé.
    Quand on fait un sp_help <nom_de_table> le champ visiblement se nomme index_keys ...
    Merci de votre aide éclairé...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 293
    Points : 182
    Points
    182
    Par défaut
    J'ai un début de réponse ... Il me semble que le champ KEYS1 sous sysindexes, contient le nom de champs indexé mais en binaire...(euh pardon hexa
    Quelqu'un peut'il me confirmer ou m'infirmer cela ??
    De plus si c'est cela comment utiliser le convert convenablement pour me soretir mes noms de champs convenablement.
    Merci

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Le codage de l'information dans sysindexes est relativement compliqué.

    Si on regarde la source de sp_helpindex on voit:

    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
    43
    44
    45
     
    while @indid is not NULL
    begin
     
            /*
            **  First we'll figure out what the keys are.
            */
            declare @i int
            declare @thiskey varchar(30)
            declare @sorder char(4)
            declare @lastindid int
     
            select @keys = "", @i = 1
     
            set nocount on
     
            while @i <= 31
            begin
                    select @thiskey = index_col(@objname, @indid, @i)
     
                    if (@thiskey is NULL)
                    begin
                            goto keysdone
                    end
     
                    if @i > 1
                    begin
                            select @keys = @keys + ", "
                    end
     
                    select @keys = @keys + @thiskey
     
                    /*
                    ** Get the sort order of the column using index_colorder()
                    ** This support is added for handling descending keys.
                    */
                    select @sorder = index_colorder(@objname, @indid, @i)
                    if (@sorder = "DESC")
                            select @keys = @keys + " " + @sorder
     
                    /*
                    **  Increment @i so it will check for the next key.
                    */
                    select @i = @i + 1
    ...
    Donc il on peut utiliser la fonction index_col() pour cette information.

    Et, comme d'habitude, prendre l'habitude de regarder la source des proc stockées pour comprendre comment les choses marchent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    use sybsystemprocs
    go
    sp_helptext sp_helpindex
    go
    Michael

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 293
    Points : 182
    Points
    182
    Par défaut
    oui merci pour le conseil en sp_helptext mais je ne suis que dbo sur la base en les SA ont limiter l'utilisation de certaines procédures, stockés... Je n'ai donc pas put faire cette vérif directement.
    Merci pour le sp_helptext, cela va m'être util
    thx

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 293
    Points : 182
    Points
    182
    Par défaut
    Euh erreur de ma part je peux faire sp_helptext, mais que lorsque je suis sous sybsystemprocs....
    je pensais pouvoir faire appel à cette procstocks de n'importe ou ???
    c'est curieux, est-ce un comportement normal ??

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    C'est normal - sp_helptext permet de voir le code d'une proc stockée pour autant qu'elle soit définie dans la base courante. sp_helptext est en fait une requète sur la table syscomments qui contient le texte des procs stockées, triggers, etc. Comme les procs sp_XXX sont définies dans sybsystemprocs sp_helptext ne peut les voirs que si on est dans cette base.

    Michael

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

Discussions similaires

  1. Modifier champ indexés en SQL
    Par jlvalentin dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/10/2005, 12h26
  2. [SQL] select champ 5-ème caractère = "D"
    Par mlequim dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/09/2005, 17h15
  3. [SQL] préciser un index
    Par shurized dans le forum Oracle
    Réponses: 2
    Dernier message: 11/05/2005, 12h37
  4. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12
  5. [sql] [jointure] champs = substring(champs,1,5)
    Par DaxTaz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2004, 12h45

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