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

Scripts/Batch Discussion :

Barre de progression d'une proc stockée [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par défaut Barre de progression d'une proc stockée
    Bonjour,

    je dispose d'un batch (dos) qui lance une procédure stockée (Base Oracle)

    J'aurai voulu me créer une sorte de barre de progression qui aurai affiché l'état d'avancement de ma proc.

    Le temps d'exécution de ma proc est variable.
    Elle traite différentes tables, le % de progression sera fait en fonction du nombre de tables traitées.

    J'ai pas mal fouillé le net mais rien trouvé qui puisse m'aider...

    Quelqu'un aurait il une idée ? si c'est possible...

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    je crois que senji à répondu à ta question ici

    ** Bonne Continuation **

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par défaut
    Humm..oui çà a l'air... par contre, par contre j'ai du mal à comprendre le code...Je fais des recherches et re-post si j'ai des questions

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par défaut
    Hummm...comprend pas tout

    J'ai ajouté du commentaire car j'y comprenait rien et plusieurs chose me turlupine...

    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
    SETLOCAL ENABLEDELAYEDEXPANSION
    rem Initialisation de la variable
    SET i=1
    
    :DEBUT
    rem appel d'une sous-routine
    CALL :ProgressBar %i%
    rem Copie d'un rep d'une source vers une destination
    XCOPY c:\toshiba D:\Toshiba /S /E /C /I /F /Y
    
    rem Incrémentation de la variable
    SET /a i = i + 1
    if /i %i% LEQ 100 goto start
    rem Permet de sortir de la routine
    GOTO :EOF
    
    :ProgressBar
    TITLE %1%% Completed
    rem Sorti du script en cours
    EXIT /b
    rem Repositionne la valeur SetLocal comme elle était en début de prog.
    ENDLOCAL
    - L'appel de la sous-routine : ProgressBar permet d'éxécuter son code et en même temps de réaliser la copie ? (je ne savais pas que c'était possible)

    - Je ne fais pas bien la différence entre le EXIT /b et le goto eof

    - Le goto start, il mène où? C'est juste l'appel pour repartir sur la suite de notre code?

    - En gros, j'ai du mal a comprendre le déroulement du code...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par défaut
    Bon alors après avoir lâché le pb, je suis revenu dessus avec un autre code, alors je poste ma solution.
    Petit précision, je voulais une barre qui reflète REELEMENT le degré d'avancement. Pour cela, je lis un fichier un log. Seulement; il m'arrivait parfois d'avoir des pb d'arrondi et la barre des 100% n'était pas rempli au maximum à tort...
    J'ai donc utilisé un système de palier, c-a-d que je vérifie que chaque palier (dizaine)est atteint avant de passer au suivant.
    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
    48
    49
    50
    51
    52
    @echo off
    rem Activation de l'expansion retardée  pour la gestion des variables revalorisées dans une boucle ( !var! plutôt que %var%)
    SETLOCAL enabledelayedexpansion
    
    ECHO.
    ECHO ²²²²²²²²²²²²²²² Lancement du prog ²²²²²²²²²²²²²²²² 100%%
    ECHO.
    
    SET Avancement=0
    SET Palier=0
    SET Barre=ÛÛÛÛÛ
     
    rem Création du fond de la barre de progression sur une longueur de 50 caractères
    FOR /l %%a IN (1,1,50) DO SET j=!j!²
    FOR /l %%a IN (1,1,50) DO SET j=!j!
    (SET /P j=!j!) < NUL
    
    rem Appel à la procédure sql
    start "Titre" /MIN SQLPLUS -s mon_user/mon_mdp@ma_base @mon_fichier.sql mes_param
    
    :AffichageBarre
    rem : Affichage de la progression dans le titre
    TITLE  Progression %Avancement%%%
    
    rem La barre de progression ne fait que 50 caractères, donc on ajoute 5 caractères tout les 10% en vérifiant être passé dans tout les cas.
    IF /i %Avancement% GEQ 10  ( IF /i %Palier% EQU 0  ( SET Palier=10  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 20  ( IF /i %Palier% EQU 10 ( SET Palier=20  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 30  ( IF /i %Palier% EQU 20 ( SET Palier=30  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 40  ( IF /i %Palier% EQU 30 ( SET Palier=40  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 50  ( IF /i %Palier% EQU 40 ( SET Palier=50  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 60  ( IF /i %Palier% EQU 50 ( SET Palier=60  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 70  ( IF /i %Palier% EQU 60 ( SET Palier=70  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 80  ( IF /i %Palier% EQU 70 ( SET Palier=80  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 90  ( IF /i %Palier% EQU 80 ( SET Palier=90  & (SET /P j=!Barre!) < NUL ))
    IF /i %Avancement% GEQ 100 ( IF /i %Palier% EQU 90 ( SET Palier=100 & (SET /P j=!Barre!) < NUL ))
    
    rem Gestion de l'intervalle entre les test de progression 
    PING -n 2 127.0.0.1 > NUL
    
    rem Calcul pour identifier le degré d'avancement
    rem Le mien se faisait grâce à la lecture d'un fichier de log
    SET /a Avancement=.............................;
    
    rem Si le palier des 100% n'est pas atteint, on relance la gestion de la barre de progression
    IF /i %Palier% NEQ 100 GOTO AffichageBarre 
    
    rem Désactivation de l'expansion retardée
    ENDLOCAL
    ECHO.
    ECHO.
    ECHO Prog terminé
    Voilà voilà
    ++

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 14/01/2009, 12h03
  2. Appels de procedures stockées dans une proc stockée ?
    Par Nadaa dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 17/07/2008, 10h32
  3. Barre de progression sur une requète SQL
    Par Wilco dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/04/2005, 14h20
  4. Requete sur une proc stockée
    Par jeff37 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/04/2005, 00h56
  5. Réponses: 2
    Dernier message: 16/10/2003, 17h17

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