Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/08/2007, 14h50   #1
Membre du Club
 
Inscription : mars 2007
Messages : 248
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 248
Points : 46
Points : 46
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 :
print "Nombre de x est : %1! nombre de y est : %2!", @nbr_x, @nbr_y
J'obtiens les lignes avec le decalage
Code :
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 :
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
msomso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 15h36   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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 :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 16h21   #3
Membre habitué
 
Inscription : mars 2006
Messages : 293
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 293
Points : 140
Points : 140
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 :
isql -Usa -Ptoto -Sdatabase -b
arona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 09h49   #4
Membre du Club
 
Inscription : mars 2007
Messages : 248
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 248
Points : 46
Points : 46
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
msomso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h32   #5
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
En fait je pensais à qqch comme ceci:

Code :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h36.


 
 
 
 
Partenaires

Hébergement Web