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

Adaptive Server Enterprise Sybase Discussion :

[ASE 12.0] Faire 'set headings off' pour formater la sortie du select (procédure)


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut [ASE 12.0] Faire 'set headings off' pour formater la sortie du select (procédure)
    Bjr
    J'ai deux questions suivantes:
    Q1:
    J'effectue un select (sans curseur) dans une procédure stockée dans le but de tester l'existence d'enregistrement (@@rowcount <> 0).
    J'utilise l'option 'set nocount on' pour éviter l'affichage des valeurs dans le log.
    Est-il possible d'éviter aussi l'affichage des entêtes des colonnes (set headings off ...) pour ne pas "polluer" mes log ?
    Q2:
    Connaissez-vous des astuces pour afficher proprement (cadrées à gauche et sur même nombre de caractères ) des valeurs numériques par la commande print ?
    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Nombre de x est : %1! nombre de y est : %2!", @nbr_x, @nbr_y
    J'obtiens les lignes avec le decalage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nombre de x est :1 nombre de y est: 12
    Nombre de x est :1002 nombre de y est: 589
    Or je voudrais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Nombre de x est :    1 nombre de y est :   12
    Nombre de x est : 1002 nombre de y est :  589
    Merci
    msomso

  2. #2
    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
    Pour la première question: cela dépend - il faudrait voir le code.

    Peut être que le select peut être transformé en clause IF().

    Mais en général le formattage est fait dans le client, et les entêtes ne sont pas controlable dans la proc.

    Pour la deuxième question - on ne peut pas formatter directement les données dans un PRINT. Par contre on peut passer par un SELECT intermédiaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    declare @nbr_x int
    declare @c_nbr_x varchar(10)
     
    -- .... qqch a mis une valeur dans nbr_x, on le formatte avec str():
    select @c_nbr_x = str(@nbr_x, 10, 0)
     
    print "Le nombre est: %1!", @c_nbr_x
    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

  3. #3
    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
    Tu peux enlever les entête de col en fesant (je crois.. isql avec l'option -b donc cela donne un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql -Usa -Ptoto -Sdatabase -b

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bjr,

    Pour l'option "-b" j'ai vraiment loopé: c'est la toute première dans la liste de la doc (UtilityUnix), mais étant présentée sans commentaire direct, j'ai ne l'ai pas vue ! Merci Arona.
    Mon vrai besoin serait pourtant de pouvoir la positionner localement pour une procedure et non pour toute la session isql. Mais ce "-b" servira sûrement un jour.

    Pour le reste, Michael si j'ai bien compris, tu suggères "IF exists (SELECT ...". Je vais voir si je peux continuer à affecter une variable avec:
    IF exists (SELECT @ma_var=select ...).
    Si oui alors ce sera une solution, sinon je vais passer par un cursseur avec un seul fetch.
    Merci aussi pour la fonction str: j'ai essayé avant convert(char(), ...) , mais son résultat est cadré à droite. La fonction str me sera plus utile.

    Merci à vous deux
    msomso

  5. #5
    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
    En fait je pensais à qqch comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    create procedure foo
    as
    declare @rows int
    -- on fait qqch.....
    select @rows = @@rowcount
     
    if @rows = 0
    begin
        -- code pour la condition avec rowcount 0...
    end
    else
    ...... etc...
    Donc si on fait un assignement dans le SELECT celui-ci n'est pas remonté dans le client. Utiliser un curseur pour ce genre de chose est un peu lourd

    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

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

Discussions similaires

  1. Comment faire un splash screen pour son application?
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 14h28
  2. Réponses: 3
    Dernier message: 11/04/2006, 08h26
  3. Comment faire un script file pour lftp
    Par dietrich dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 26/03/2006, 11h33
  4. Réponses: 3
    Dernier message: 02/03/2006, 13h56
  5. faire un menu contextuel pour données issue d'1 table
    Par electrosat03 dans le forum Access
    Réponses: 2
    Dernier message: 27/02/2006, 19h41

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