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 :

[ASE]sp_helptext ne m'affiche pas le code de ma proc stockée


Sujet :

Sybase

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [ASE]sp_helptext ne m'affiche pas le code de ma proc stockée
    Bonjour à tous,

    Mon problème est le suivant, je créé une procédure sotckée avec dans le code la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "
    select  *
    into    #BILL_EQUIP_DETAIL
    from    BILL_EQUIP_DETAIL       BED     (PREFETCH 16 MRU) NOHOLDLOCK
    where
    BED.index_bill_ref              = @index_bill_ref_pere
    and     BED.index_bill_ref_resets       = @index_bill_ref_resets_pere
    "
    L'installation et la compilation de la procédure se passent correctement, mais surprise lorsque je regarde le code de la procédure stockée sous Sybase avec un sp_helptext cette requête est transformé en :
    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
    46
    47
     
    "
     select  BED.type_id_usg, BED.jurisdiction, BED.msg_id, BED.msg_id2,
    BED.msg_id_serv, BED.index_bill_ref, BED.index_bill_re
    f_resets, BED.process_num, BED.subscr
     
             _no, BED.subscr_no_resets, BED.element_id, BED.provider_id,
    BED.bill_class, BED.trans_dt, BED.point_target, BED.p
    oint_origin, BED.point_id_target, BED.point_id_origin, BED.ccard_id,
    BED.ccard_id_serv, BED.units, BED.units_credited, BED
    .amount_credited, BE
     
             D.amount, BED.rated_amount, BED.foreign_amount, BED.base_amt,
    BED.geocode, BED.aux_tax_info, BED.customer_tag, BE
    D.annotation, BED.ext_tracking_id, BED.rate_period, BED.arch_flag,
    BED.unrounded_amount, BED.trans_id, BED.aggr_usage_id,
    BED.rate_class, BED.
     
             rate_currency_code, BED.account_no, BED.external_id,
    BED.external_id_type, BED.country_code_origin, BED.country_d
    ial_code_origin, BED.point_tax_code_origin,
    BED.point_tax_code_type_origin, BED.country_code_target,
    BED.point_tax_code_ta
    rget, BED.point_tax_
     
             code_type_target, BED.rate_dt, BED.second_dt, BED.timezone,
    BED.primary_units, BED.second_units, BED.third_units,
     BED.units_currency_code, BED.billing_units_type, BED.federal_tax,
    BED.state_tax, BED.county_tax, BED.city_tax, BED.other_
    tax, BED.comp_status
     
             , BED.cdr_status, BED.file_id, BED.file_id_serv,
    BED.rev_rcv_cost_ctr, BED.corridor_plan_id, BED.bill_invoice_row
    , BED.cell_id_origin, BED.split_row_num, BED.orig_type_id_usg,
    BED.access_region_origin, BED.access_region_target, BED.uni
    t_cr_id, BED.open_it
     
             em_id, BED.num_records, BED.amount_reduction,
    BED.amount_reduction_id, BED.rated_amount_reduction
    into    #BILL_EQUIP_DETAIL
    from    BILL_EQUIP_DETAIL       BED     (PREFETCH 16 MRU) NOHOLDLOCK
    where
    BED.index_bill_ref              = @index_bill_ref_pere
    and     BED.index_bill_ref_r
     
             esets  = @index_bill_ref_resets_pere
    "
    Bref le * est remplacé par l'ensemble des champs de la table que je désire copier dans la table temporaire.

    Est ce que quelqu'un peut m'expliquer de quelle manière Sybase a interprété le select * ?
    Pour info, j'utilise la version 12 de Sybase.

    Merci d'avance à celui qui pourra faire la lumière sur ce problème.

  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 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut
    Il remplace effectivement le * par tous les champs.
    Il évite ainsi les problèmes liés à la précompilation d'un objet qui aurait vu son DDL modifié entre temps.

    Le * est de toute façon à proscrire de la programmation. Utilisez-le en phase de développement par soucis de rapidité, mais évitez-le en prog pour des raisons évidentes de pérennité de code.
    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
    Membre chevronné

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    On peut ajouter que le trace flag non-documenté 243 permet de modifier ce comportement (donc avec le traceflag activé "select *" n'est pas remplacé par la liste des colonnes).

    Ce qui n'empèche que je suis 100% d'accord avec fadace - select * ne doit pas être utilisé dans des bases de productions.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci à vous deux pour ces informations :-)

Discussions similaires

  1. [MySQL] La page ne s'affiche pas avec ce bout de code
    Par mimagyc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/08/2007, 23h56
  2. [Javascript] IE(page qui ne s'affiche pas alors que code html présent)
    Par Woufeigh dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/04/2007, 19h54
  3. [google map] code n'affiche pas les marqueurs voulus
    Par arnogef dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/03/2007, 11h19
  4. Réponses: 15
    Dernier message: 23/01/2007, 15h27
  5. Réponses: 1
    Dernier message: 08/12/2006, 10h16

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