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
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
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.
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.
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.
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 ?
J'arrive à me connecter comme ceci :
Mais avec quel argument en plus puis-je lui dire de m'exécuter mon script toto.sql ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part sqlplus login/password@//hostname:port/servicename
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.
Merci, l'appel fonctionne en faisant comme ça depuis DOS :
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 ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part sqlplus login/password@//hostname:port/servicename @monscript.sql
Je cherche à enregistrer la log dans un fichier et accessoirement chronométrer la durée d'exécution.
Voici monscript.sql :
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
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
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;
Il faut que votre code se termine ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 end; / SPOOL OFF
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.
Partager