oracle - varios - ¿Cómo puedo emitir un solo comando desde la línea de comando a través de sql plus?
obtener usuario actual oracle (6)
Usando SQL Plus, puede ejecutar un script con el operador "@" desde la línea de comando, como en:
c:/>sqlplus username/password@databasename @"c:/my_script.sql"
¿Pero es posible simplemente ejecutar un solo comando con una sintaxis similar, sin un archivo de script separado? Como en:
c:/>sqlplus username/password@databasename @execute some_procedure
Estoy interesado en esto porque quiero escribir un archivo por lotes que simplemente ejecute un comando, sin generar un montón de archivos ".sql" de dos líneas.
¿Has intentado algo como ésto?
sqlplus username/password@database < "EXECUTE some_proc /"
Parece que en UNIX puedes hacer:
sqlplus username/password@database <<EOF
EXECUTE some_proc;
EXIT;
EOF
Pero no estoy seguro de cuál sería el equivalente de Windows.
Así es como resolví el problema:
<target name="executeSQLScript">
<exec executable="sqlplus" failonerror="true" errorproperty="exit.status">
<arg value="${dbUser}/${dbPass}@<DBHOST>:<DBPORT>/<SID>"/>
<arg value="@${basedir}/db/scripttoexecute.sql"/>
</exec>
</target>
Puedo ejecutar una consulta SQL atornillando a SQL * Plus:
@echo select count(*) from table; | sqlplus username/password@database
Dar
@echo execute some_procedure | sqlplus username/password@databasename
un intento.
Para UNIX (AIX):
export ORACLE_HOME=/oracleClient/app/oracle/product/version
export DBUSER=fooUser
export DBPASSWD=fooPW
export DBNAME=fooSchema
echo "select * from someTable;" | $ORACLE_HOME/bin/sqlplus $DBUSER/$DBPASSWD@$DBNAME
@find /v "@" < %0 | sqlplus -s scott/tiger@orcl & goto :eof
select sysdate from dual;
sqlplus user/password@sid < sqlfile.sql
Esto también funcionará desde la línea de comandos de DOS. En este caso, el archivo sqlfile.sql contiene el SQL que desea ejecutar.