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

Windows Discussion :

à la limite de dos et d'oracle !!


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 155
    Points : 74
    Points
    74
    Par défaut à la limite de dos et d'oracle !!
    Bonjour à tous,


    Voici mon problème, j'essaie d'appeler une procédure stockée oracle dans un .bat.

    Cette proc stock a des paramètres en E/S.

    Est-il possible d'appeler une proc stock dans un .bat ?
    Comment récupérer le para. en sortie ?

    Voici ce que j'ai fait (et qui ne fonctionne pas !) :

    ==========================================================
    set PathLoad=F:\PathLoad\
    SqlLdr userid=USRDEV/toto@mabase control=%PathLoad%\CTL\Load4.ctl data=%PathLoad%CSV\%1 Log=%PathLoad%\LOG\load.log

    set var1=OK

    sqlplus -s USRDEVGECSAS52/martin@basel2 execute pack_age.checktable t4, 6, %%var1

    ==========================================================


    Ce serait censé lancer la proc stock checktable avec les para. t4, 6 et %%tutu (résultat).

    J'ai de gros doutes sur la faisabilité de ce batch.

    Partagez-vous mes doutes ?

    Cordialement.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Un approche qui utilise un fichier intermédiaire :
    echo off
    rem Get_ORA_Status.cmd
    rem Obtient le status de la base [ OPEN,MOUNTED,...] et renseigne la variable SID_STATUS

    rem Extraction du statut de la base %Oracle_SID%
    rem paramétre :
    rem %ShortFNStatus% Nom_du_fichier_spool ( résultat )
    rem %OraUser% Nom de compte
    rem %UserPwd% Password du compte
    rem %ORACLE_SID% SID de la base interrogée

    "%ORACLE_BIN%\sqlplus" /NOLOG @"%LDTOOLS%\SQL\Get_status.sql" %ShortFNStatus% %OraUser% %UserPwd% %ORACLE_SID%>nul

    rem Test des différents résultat de la requête SQL

    rem Pas connecté
    type "%ShortFNStatus%"|find /i "ORA-01012: not logged on">nul
    rem 1 non la chaine n'existe pas.
    rem 0 oui la chaine existe.
    IF ERRORLEVEL 1 goto suite1
    IF ERRORLEVEL 0 Set SID_STATUS=NOTLOGGED&goto fin

    :suite1
    rem Instance inexistante
    type "%ShortFNStatus%"|find /i "ORA-01034: ORACLE not available">nul
    IF ERRORLEVEL 1 goto suite2
    IF ERRORLEVEL 0 Set SID_STATUS=NOTAVAILABLE&goto fin

    :suite2
    rem Base non montée
    type "%ShortFNStatus%"|find /i "STARTED">nul
    IF ERRORLEVEL 1 goto suite3
    IF ERRORLEVEL 0 Set SID_STATUS=STARTED&goto fin

    :suite3
    rem Base montée
    type "%ShortFNStatus%"|find /i "MOUNTED">nul
    IF ERRORLEVEL 1 goto suite4
    IF ERRORLEVEL 0 Set SID_STATUS=MOUNTED&goto fin

    :suite4
    rem Base ouverte
    type "%ShortFNStatus%"|find /i "OPEN">nul
    IF ERRORLEVEL 1 goto fin
    IF ERRORLEVEL 0 Set SID_STATUS=OPEN&goto fin

    rem fin du batch
    :fin
    set ShortFNStatus=
    le .sql
    set echo off
    set head off
    set feed off
    set pause off
    set pagesize 0

    -- Récupére le status d'une base dans un fichier de spool
    -- analysé dans un fichier CMD

    -- 1 nom du fichier spool
    -- 2 Username
    -- 3 password
    -- 4 SID
    connect &2/&3@&4


    Spool &1
    Select status from v$instance;
    Spool off

    Exit
    Mais le partage de variable entre Oracle et l'OS est peut être plus simple. Il faudrait vérifier dans la doc de SqlPlus si c'est possible sous NT.
    As-tu effectué une recherche dans le forum Oracle ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 155
    Points : 74
    Points
    74
    Par défaut
    oops ma foi on peut en faire des choses avec un . bat !!!!
    Donc j'ai essayé de faire tourner ce bat, je l'ai légèrement modifié pour renseigner les var., j'ai fait :
    en début de bat :
    set ShortFNStatus="F:\Equipe\Frederic\spool.txt"
    set OraUser=toto
    set UserPwd=tutu
    set ORACLE_SID=mabase

    j'ai remplacé :

    "%ORACLE_BIN%\sqlplus" /NOLOG @"%LDTOOLS%\SQL\Get_status.sql" %ShortFNStatus% %OraUser% %UserPwd% %ORACLE_SID%>nul

    par :

    "sqlplus" /NOLOG @"F:\Basel2Fermat\Equipe\Frederic\Desk\spool.sql" %ShortFNStatus% %OraUser% %UserPwd% %ORACLE_SID%>nul



    le .sql je suppose que c'est celui qui est appelé Get_status.sql dans le .bat et dont le code est donné en fin de post ?


    Ca ne fonctionne pas tout à fait, ça donne en fin d'exécution :

    The system cannot find the path specified.
    The system cannot find the path specified.
    The system cannot find the path specified.
    The system cannot find the path specified.
    The system cannot find the path specified.
    Environment variable echo not defined
    Environment variable head not defined
    Environment variable feed not defined
    Environment variable pause not defined
    Environment variable pagesize not defined

    Pour répondre à ta question je n'ai pas été voir dans le forum oracle, j'y vais faire un tour.

    Merci de ton aide.

    Cordialement.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fguigui
    le .sql je suppose que c'est celui qui est appelé Get_status.sql dans le .bat et dont le code est donné en fin de post ?
    Oui

    Pour les erreurs je ne vois pas trop mais j'utilise ce batch qui renvoi un nom de fichier court :
    @echo off
    rem GetShortFileName.cmd

    rem renvoie un nom de fichier court dans le nom de variable d'environnement passée en paramétre %1
    rem dans le cas ou un prg attend un paramétre nom de fichier de type FAT16
    rem les espaces contenus dans son nom peuvent poser PB.
    rem si un espace existe dans le nom de fichier, ce nom de fichier seras vu comme N paramétres

    rem %1 = nom de fichier.
    rem %2 = nom de variable d'environnement.
    rem
    rem exemple :
    rem
    rem GetShortFileName "c:\t r\1234567890.txt" SFileName
    rem Renvoie, selon le contexte, SFileName=C:\RT01DA~1\123456~1.TXT
    set V1=%2
    for /F "tokens=*" %%I in ('echo %1') do set %V1%=%%~sI
    set V1=

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 155
    Points : 74
    Points
    74
    Par défaut
    Bon OK ça marche (je m'étais trompé dans le chemin d'un fichier la honte ! ).
    Je vais voir, maintenant, comment récupérer dans le bat le paramêtre sortie d'une proc stock.

    Merci beaucoup de ton aide.

    Cordialement.

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

Discussions similaires

  1. limit et temps d'execution avec oracle et PHP
    Par dor_boucle dans le forum Oracle
    Réponses: 20
    Dernier message: 10/12/2005, 14h31
  2. Réponses: 2
    Dernier message: 13/10/2005, 19h04
  3. limiter le nombre de connexion VB-Oracle
    Par lonestar dans le forum Oracle
    Réponses: 12
    Dernier message: 05/08/2005, 12h29
  4. commande dos sous oracle
    Par tcy dans le forum Oracle
    Réponses: 4
    Dernier message: 18/07/2005, 11h51
  5. "LIMIT" pour Oracle ?
    Par aweb01 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/09/2004, 11h39

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