Me gustaría ejecutar un script de Oracle a través de SQL Plus a través de un símbolo del sistema de Windows. El script no contiene un comando de "salida", pero todavía me gustaría que SQL Plus salga, devolviendo el control al símbolo del sistema al completar el script. Mi objetivo es hacer esto sin modificar el guión. es posible?
114
Respuestas:
Otra forma es usar este comando en el archivo por lotes:
fuente
Encontré que esta es la mejor solución y funciona en una terminal o dentro de un script:
fuente
Al darse cuenta ahora de que su problema puede estar en el archivo sql en sí mismo, tenga en cuenta que es necesario decirle a sqlplus que salga. La forma en que hago esto es:
(La barra oblicua es importante. Le dice a sqlplus que ejecute el estado (s) arriba).
fuente
La mejor manera de ocultar la información del usuario y las salidas es:
exit
se suministra a la salida de sqlplus forzándolo a salir.-S
suprime toda la salida del servidor que no sea la consulta sql en el script.fuente
También puede hacer esto en su script de shell.
Es posible que deba escapar del ";" con un \.
fuente
Sí, es posible: genere una secuencia de comandos de contenedor que configure SQLPlus de manera adecuada, incluya su secuencia de comandos (es decir
@YourTargetScript.sql
) y luego salga.Dicho esto, no recomiendo este enfoque en absoluto: SQLPlus tiene muchas trampas para uso programático; Al escribir scripts de shell en el pasado que usaban Oracle, construí un envoltorio de Python a su alrededor (agregando un comportamiento de manejo de errores más razonable, separación sensata de salida entre stdout / stderr, soporte de salida CSV nativo y otros beneficios similares), y eso funcionó mucho mejor.
fuente
Me gusta esto:
Si coloca esto en un archivo por lotes, el control continuará con las declaraciones que lo siguen.
EDITAR: Mi error, inténtalo de nuevo con / nolog flag
fuente
Para aquellos preocupados por la seguridad de incluir su contraseña en el script, AskTom tiene un artículo sobre "identificado externamente" http: //asktom.oracle.com/pls/apex/f? P = 100: 11: 0 ::::: P11_QUESTION_ID: 142212348066
fuente
En su secuencia de comandos SQL agregue EXIT. Aquí hay un ejemplo de que mi archivo test.bat tiene lo siguiente:
sqlplus user / pwd @ server @ test.SQL> myLOG.LOG
mi archivo test.sql tiene lo siguiente: select * from dual; salida
fuente
salir | SQLPLUS / @ @
Esta es la solución correcta, he intentado que funcione
fuente