Discussion: sqlcmd pour Oracle ?

  1. #1
    Membre régulier
    Inscrit en
    novembre 2004
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 307
    Points : 108
    Points
    108

    Par défaut sqlcmd pour Oracle ?

    Bonjour,
    Je voulais savoir s'il existait l'équivalent oracle de sqlcmd en SQL Server et qui ne soit pas SQL*Plus. Je voudrais juste un outil en ligne de commande DOS pour lancer un script SQL sur oracle en écrivant l'output dans un fichier.
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 498
    Points : 22 756
    Points
    22 756

    Par défaut

    Et que reproches-tu à sqlplus ?
    En quoi ne répond-il pas à ton cahier des charges ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Inscrit en
    novembre 2004
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 307
    Points : 108
    Points
    108

    Par défaut

    J'ai besoin de pouvoir lancer mon script SQL depuis une commande DOS et de pouvoir générer un fichier d'output, est-ce possible avec SQL*Plus ? Je ne connais pas cet outil, je viens du monde Sybase/SQL Server.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 498
    Points : 22 756
    Points
    22 756

    Par défaut

    C'est tout à fait possible et sans doute pas plus compliqué qu'avec sqlcmd.
    Le nom du fichier de script est l'un des paramètres de la commande sqlplus et celui du fichier de sortie peut être ajouté en paramètre complémentaire et pris en charge dans le script.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre régulier
    Inscrit en
    novembre 2004
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 307
    Points : 108
    Points
    108

    Par défaut

    en faisant sqlplus dans le prompt cmd DOS, il me demande de me connecter, moi je veux une solution que je peux automatiser via un ordonnanceur par exemple, il ne faut donc pas qu'il y ait des étapes de saisies. Sais-tu comment gérer les paramètres de connexions et d'output dans les paramètre de la commande sqlplus du coup s'il te plaît ?

  6. #6
    Membre régulier
    Inscrit en
    novembre 2004
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 307
    Points : 108
    Points
    108

    Par défaut

    J'arrive à me connecter comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus login/password@//hostname:port/servicename
    Mais avec quel argument en plus puis-je lui dire de m'exécuter mon script toto.sql ?

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 498
    Points : 22 756
    Points
    22 756

    Par défaut

    As-tu regardé dans la documentation ?

    Il suffit d'ajouter à ta ligne de commande @nom_du_script suivi des arguments du script.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre régulier
    Inscrit en
    novembre 2004
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 307
    Points : 108
    Points
    108

    Par défaut

    Merci, l'appel fonctionne en faisant comme ça depuis DOS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus login/password@//hostname:port/servicename @monscript.sql
    mais ça me retourne juste un numéro de ligne correspondant au dernier "end if;" du script : " 20 " et les procédures stockées ne sont pas appelées. Je dois faire CTRL+C pour sortir et j'ai bien un fichier results.txt qui se crée avec comme contenu : " 20 ".
    Je cherche à enregistrer la log dans un fichier et accessoirement chronométrer la durée d'exécution.
    Voici monscript.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
    SPOOL results.txt
    SET SERVEROUTPUT ON
    SET TIMING ON
    declare
    	res number;
    	errorText varchar2(32767);
    begin
        MYPROCSTOCK(1, 'aname1', '', '', 'alogin', res, errorText);
        if res != 0 then
            dbms_output.put_line('ID ' || To_Char(1) || ' - ' || 'An error occured : ''' || errorText || '''');
        else
            dbms_output.put_line('ID ' || To_Char(1) || ' - ' || 'DONE');
        end if;
     
        MYPROCSTOCK(2, 'aname2', '', '', 'alogin', res, errorText);
        if res != 0 then
            dbms_output.put_line('ID ' || To_Char(2) || ' - ' || 'An error occured : ''' || errorText || '''');
        else
            dbms_output.put_line('ID ' || To_Char(2) || ' - ' || 'DONE');
        end if;
    end;
    SPOOL OFF
    Pour info, quand je lance le script suivant depuis sqldevelopper, ça fonctionne bien :
    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
    SET SERVEROUTPUT ON
    declare
    	res number;
    	errorText varchar2(32767);
    begin
        MYPROCSTOCK(1, 'aname', '', '', 'alogin', res, errorText);
        if res != 0 then
            dbms_output.put_line('ID ' || To_Char(1) || ' - ' || 'An error occured : ''' || errorText || '''');
        else
            dbms_output.put_line('ID ' || To_Char(1) || ' - ' || 'DONE');
        end if;
     
        MYPROCSTOCK(2, 'aname', '', '', 'alogin', res, errorText);
        if res != 0 then
            dbms_output.put_line('ID ' || To_Char(2) || ' - ' || 'An error occured : ''' || errorText || '''');
        else
            dbms_output.put_line('ID ' || To_Char(2) || ' - ' || 'DONE');
        end if;
    end;

  9. #9
    Rédacteur

    Profil pro
    Consultant
    Inscrit en
    décembre 2002
    Messages
    3 217
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : décembre 2002
    Messages : 3 217
    Points : 7 064
    Points
    7 064

    Par défaut

    Il faut que votre code se termine ainsi :
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

  10. #10
    Membre régulier
    Inscrit en
    novembre 2004
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 307
    Points : 108
    Points
    108

    Par défaut

    Le "/" fonctionne effectivement, merci !
    Pouvez-vous me dire où je pouvais trouver cette info, histoire de voir ce que j'ai loupé ?
    Autre chose, dans un script exécuté par SQLPLUS, est-ce que "SET SERVEROUTPUT ON" a du sens ?
    Je l'avais mis quand j'exécutais par sqldeveloper afin d'avoir l'output dans la fenêtre de Sortie SGBD.

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

Discussions similaires

  1. "LIMIT" pour Oracle ?
    Par aweb01 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/09/2004, 12h39
  2. [tomcat] [jsp] Problème avec driver OCI pour oracle
    Par nanardcompanie dans le forum Tomcat
    Réponses: 3
    Dernier message: 01/07/2004, 10h54
  3. y-a-t-il un générateur pour Oracle ?
    Par bahia dans le forum Autres outils décisionnels
    Réponses: 3
    Dernier message: 27/08/2003, 10h07
  4. [Kylix] kylix + dbexpress pour oracle!!
    Par RezzA dans le forum EDI
    Réponses: 6
    Dernier message: 14/01/2003, 19h33

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