如何通过sql plus从命令行发出单个命令?
使用SQL Plus,您可以在命令行中使用“@”运算符运行脚本 ,如下所示:
c:\>sqlplus username/password@databasename @"c:\my_script.sql" 但是,是否可以只用一个类似的语法来运行一个命令 ,而没有一个单独的脚本文件? 如:
 c:\>sqlplus username/password@databasename @execute some_procedure 
我对此感兴趣,因为我想编写一个只执行一个命令的batch file,而不会生成一堆两行“.sql”文件。
我可以通过pipe道到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 
但是我不确定那个窗户是什么。
对于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用户/密码@ 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>