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

PL/SQL Oracle Discussion :

exécution bloc pl/sql depuis un .bat


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 126
    Par défaut exécution bloc pl/sql depuis un .bat
    Salut,

    Je souhaite exécuter une série d'action sur une base Oracle. Pour cela j'ai écris un fichier batch qui appelle 3 fois la fonction sqlplus.

    Le premier appel s'effectue sur un fichier sql qui fait un "CREATE TABLE AS SELECT ..."

    Le second appel s'effectue sur un fichier sql qui fait un "ALTER TABLE ..."

    Le troisième et dernier appel s'effectue sur un fichier sql qui traite les données de la table et effectue des mises à jour. Le fichier contient un bloc "declare...begin...end;".

    Les deux premiers appel s'effectuent sans encombre, mais la 3e coince. La connexion est bien effective sur la base, mais inactive. Sachant que la seule différence syntaxique par rapport aux autre est la présence du bloc "declare...begin...end;", je me dis que c'est peut etre là le problème.

    Quelqu'un aurait une idée pour m'aiguiller ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shaftJackson Voir le message
    Les deux premiers appel s'effectuent sans encombre, mais la 3e coince. La connexion est bien effective sur la base, mais inactive. Sachant que la seule différence syntaxique par rapport aux autre est la présence du bloc "declare...begin...end;", je me dis que c'est peut etre là le problème.
    Quelqu'un aurait une idée pour m'aiguiller ?
    ça serait bien de voir le vrai code plsql et bat, pour commencer...

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 126
    Par défaut
    Citation Envoyé par Jerome_Mtl Voir le message
    ça serait bien de voir le vrai code plsql et bat, pour commencer...
    Fichier .bat

    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
    call Config.cmd
     
    echo création de la table temporaire
    rem création et remplissage de la table temporaire
    sqlplus -S %USER%/%PSW%@%TNS% @createTab.sql
     
    echo ajout de colonnes
    rem ajout des colonnes
    sqlplus -S %USER%/%PSW%@%TNS% @add_columns.sql
     
    echo Mise a jour des données
    MàJ des données de la table temporaire
    sqlplus -S %USER%/%PSW%@%TNS% @fill_tab.sql
     
    pause
    Fichier sql (3e appel, le fill_Tab.sql)

    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
    declare
        CURSOR C_tmpTab IS SELECT *
        FROM WORK.TMP_MCO_DISC
        --WHERE flag IS NULL
        FOR UPDATE;
     
        VAR_SIT1    VARCHAR2(3);
        VAR_SIT2    VARCHAR2(3);
        VAR_SIT3    VARCHAR2(3);
        Res_Cursor  C_tmpTab%ROWTYPE;
     
    begin
        select val1, val2, val3 into VAR_SIT1,VAR_SIT2,VAR_SIT3
        from work.tmp_lst_site
        where id_key in (select min(id_key) from work.tmp_lst_site);
     
    	DELETE FROM work.tmp_lst_site
    	WHERE id_key in (select min(id_key) from work.tmp_lst_site);
     
        OPEN C_tmpTab;
            LOOP
               FETCH C_tmpTab INTO Res_Cursor;
                EXIT WHEN C_tmpTab%NOTFOUND;
     
                    // ---> traitements
     
            END LOOP;
         CLOSE C_tmpTab;
     
    end;
     
    commit;
     
    exit;
    J'ai vu sur internet qu'il falait mettre "/" après le "end;".
    J'ai fais la modif et relancé mon batch en mettant en commentaire les autres appels sqlplus.
    Ca marche niquel !

    Maintenant je vais retenter en exécutant l'ensemble.

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

Discussions similaires

  1. Problème de lancement d'un SQL depuis un bat
    Par Goupsy dans le forum Sql*Plus
    Réponses: 3
    Dernier message: 03/03/2011, 10h11
  2. Réponses: 1
    Dernier message: 30/10/2008, 22h25
  3. Exécuter un script SQL depuis une procédure PL/SQL
    Par rvfranck dans le forum PL/SQL
    Réponses: 8
    Dernier message: 19/04/2008, 01h11
  4. Exécuter un fichier PHP depuis un .bat
    Par zalalus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 26/11/2007, 13h44
  5. [DTS] exécuter un lot DTS depuis T-SQL (sp_OAMethod)
    Par Yann dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/11/2004, 11h24

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