Salut

Dans un script shell j'exécute un isql qui appelle un procédure stockée.
La procédure ne retourne aucun flux de donnée mais alimente des variables qui sont retournées en output de la procédure stockée.
Le but est de créer un log style :
20130319 16:54 dbid 31514 last dump transaction on Sep 28 2012 2:31PM
20130319 16:54 Total DB size : 150.00 Mo
20130319 16:54 Reserved : 1.00 Mo - Free : 149.00 Mo - Unused : 0.00 Mo
20130319 16:54 ------------------------------
20130319 16:54 Checking tempdb
20130319 16:54 dbid 2 last dump transaction on Mar 19 2013 4:53PM
20130319 16:54 Total DB size : 3527.00 Mo
20130319 16:54 Reserved : 1.00 Mo - Free : 3526.00 Mo - Unused : 0.00 Mo
20130319 16:54 ------------------------------
20130319 16:54 End of monitor.sh on SMSTDEV
Mon problème est que cet affichage est complètement pollué par l'output automatiquement généré par sybase à la sortie de la procédure.

A chaque appel sybase écrit des lignes de type :
20130319 16:54 dbid 31514 last dump transaction on Sep 28 2012 2:31PM
20130319 16:54 Total DB size : 150.00 Mo
20130319 16:54 Reserved : 1.00 Mo - Free : 149.00 Mo - Unused : 0.00 Mo
20130319 16:54 ------------------------------
20130319 16:54 Checking tempdb

Return parameters:

@dbid @dumptrdate @totalsize @reserved @data
@index_size @unused
----------- ------------------------------ -------------- -------------- --------------
-------------- --------------
2 Mar 19 2013 4:53PM 3527.00 1.00 0.00
0.00 0.00

20130319 16:54 dbid 2 last dump transaction on Mar 19 2013 4:53PM
20130319 16:54 Total DB size : 3527.00 Mo
20130319 16:54 Reserved : 1.00 Mo - Free : 3526.00 Mo - Unused : 0.00 Mo
20130319 16:54 ------------------------------
20130319 16:54 End of monitor.sh on SMSTDEV
en cherchant sur le qweb, j'ai découvert une option :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
set proc_output_params OFF
Ca permet bien d'enlever les ajouts de sybase mais ça supprime également les valeurs retournées dans mes variables output passées à la procédure!!

Je suis sûre qu'il existe un moyen de récupérer les valeurs dans les variables output SANS subir ce foutu message qui sert à rien.... Si quelqu'un connait la méthode, c'est pas de refus^^


voici l'appel de la procédure, depuis isql :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
  execute @retCode=dbadmin..getDbUsage 
                              @dbname, 
                              @dbid=@dbid output,
                              @dumptrdate=@dumptrdate output,
                              @totalsize=@dbsize output,
                              @reserved=@reserved output,
                              @data=@data output,
			      @index_size=@index_size output,
                              @unused=@unused output

L'entete de la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
create procedure dbo.getDbUsage( @dbname varchar(30),
                                 @dbid int out,
                                 @dumptrdate datetime out,
                                 @totalsize numeric(11,0) out,
                                 @reserved numeric(11,0) out,
                                 @data numeric(11,0) out,
				                         @index_size numeric(11,0) out,
                                 @unused numeric(11,0) out )
au cas ou le dernier select de la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
select 
  @reserved = convert( numeric(11, 0), ( sum(res_pgs) + @slog_res_pgs) * ( low / 1024 ) / 1024),
	@data = convert( numeric(11, 0), ( sum(dpgs) + @slog_dpgs - @empty_dpgs) * ( low / 1024 ) / 1024),
	@index_size = convert(numeric(11, 0),  sum(ipgs) * (low / 1024) / 1024 ),
	@unused = convert(numeric(11, 0), (sum(unused) + @empty_dpgs) * ( low / 1024 ) / 1024)
from #pgcounts