Je souhaite exécuter un script Oracle via SQL Plus via une invite de commande Windows. Le script ne contient pas de commande "exit", mais j'aimerais quand même que SQL Plus se ferme, rendant le contrôle à l'invite de commande à la fin du script. Mon objectif est de le faire sans modifier le script. Est-ce possible?
114
Réponses:
Une autre façon consiste à utiliser cette commande dans le fichier de commandes:
la source
J'ai trouvé que c'était la meilleure solution et cela fonctionne dans un terminal ou dans un script:
la source
En réalisant maintenant que votre problème peut provenir du fichier SQL lui-même, sachez qu'il faut dire à sqlplus de quitter. Voici comment je le fais:
(La barre oblique est importante. Elle indique à sqlplus d’exécuter les statistiques au-dessus de celle-ci.)
la source
Le meilleur moyen de masquer les informations utilisateur et les sorties est:
exit
est fourni à la sortie de sqlplus le forçant à quitter.-S
supprime toute la sortie du serveur autre que requête SQL dans le script.la source
Vous pouvez également le faire dans votre script shell.
Vous pourriez avoir besoin d'échapper à la ";" avec un \.
la source
Oui, c'est possible - générez un script wrapper qui configure correctement SQLPlus, inclut votre script (c'est-à-dire
@YourTargetScript.sql
), puis effectue une sortie.Cela dit, je ne recommande pas cette approche du tout - SQLPlus a de nombreux pièges pour une utilisation programmatique; Lors de l'écriture de scripts shell dans le passé qui utilisaient Oracle, j'ai construit un wrapper Python autour de celui-ci (en ajoutant un comportement de gestion des erreurs plus raisonnable, une séparation rationnelle de la sortie entre stdout / stderr, un support de sortie CSV natif, etc.), et cela a fonctionné. beaucoup mieux.
la source
Comme ça:
Si vous mettez cela dans un fichier de commandes, le contrôle continuera avec les instructions qui le suivent.
EDIT: My bad, essayez à nouveau avec / nolog flag
la source
Pour ceux qui s’inquiètent pour la sécurité de l’inclusion de votre mot de passe dans le script, AskTom propose un article sur "identifié en externe" http: //asktom.oracle.com/pls/apex/f? P = 100: 11: 0 :::: P11_QUESTION_ID: 142212348066
la source
Dans votre script SQL, ajoutez EXIT. Voici l'exemple de mon fichier test.bat:
sqlplus utilisateur / pwd @ server @ test.SQL> myLOG.LOG
mon fichier test.sql a: select * from dual; sortie
la source
sortie | SQLPLUS / @ @
C'est la bonne solution, j'ai essayé ça marche
la source