我怎样才能通过SQL Plus中发出的命令行一个命令?
-
10-07-2019 - |
题
使用SQL另外,您可以运行脚本与命令行中的 “@” 运算符,如:
c:\>sqlplus username/password@databasename @"c:\my_script.sql"
但是,它可能只是运行的单个命令强>使用类似的语法,而无需整个单独的脚本文件?如:
c:\>sqlplus username/password@databasename @execute some_procedure
我很感兴趣,这是因为我想写,简单地执行命令的批处理文件,而不会产生一堆两行“.SQL”文件。
解决方案
我能够通过其管道到SQL * Plus来运行SQL查询:
@echo select count(*) from table; | sqlplus username/password@database
提供
@echo execute some_procedure | sqlplus username/password@databasename
一试。
其他提示
您是否尝试过这样的事情?
sqlplus username/password@database < "EXECUTE some_proc /"
好像在UNIX你可以这样做:
sqlplus username/password@database <<EOF
EXECUTE some_proc;
EXIT;
EOF
但我不知道在Windows等效的,这将是什么。
:用于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
sqlplus user/password@sid < sqlfile.sql
此也将从DOS命令行工作。在这种情况下,文件sqlfile.sql包含要执行的SQL。
@find /v "@" < %0 | sqlplus -s scott/tiger@orcl & goto :eof
select sysdate from dual;
这是我如何解决了这个问题:
<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>
不隶属于 StackOverflow