使用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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top