Как я могу выполнить одну команду из командной строки через sql plus? - PullRequest
42 голосов
/ 12 марта 2009

Используя SQL Plus, вы можете запустить скрипт с оператором "@" из командной строки, например:

c:\>sqlplus username/password@databasename @"c:\my_script.sql"

Но возможно ли просто запустить единственную команду с аналогичным синтаксисом без отдельного файла сценария? Как в:

c:\>sqlplus username/password@databasename @execute some_procedure

Меня это интересует, потому что я хочу написать командный файл, который просто выполняет команду, не создавая связку двухстрочных файлов .sql.

Ответы [ 6 ]

67 голосов
/ 12 марта 2009

Я могу выполнить запрос SQL, отправив его на SQL * Plus:

@echo select count(*) from table; | sqlplus username/password@database

Дайте

@echo execute some_procedure | sqlplus username/password@databasename

попробовать.

15 голосов
/ 12 марта 2009

Вы пробовали что-то подобное?

sqlplus username/password@database < "EXECUTE some_proc /"

Похоже, что в UNIX вы можете сделать:

sqlplus username/password@database <<EOF
EXECUTE some_proc;
EXIT;
EOF

Но я не уверен, что это будет за эквивалент Windows.

8 голосов
/ 06 октября 2014

Для 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
7 голосов
/ 20 ноября 2013
sqlplus user/password@sid < sqlfile.sql

Это также будет работать из командной строки DOS. В этом случае файл sqlfile.sql содержит SQL, который вы хотите выполнить.

0 голосов
/ 20 октября 2015
@find /v "@" < %0 | sqlplus -s scott/tiger@orcl & goto :eof

select sysdate from dual;
0 голосов
/ 01 октября 2014

Вот как я решил проблему:

<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>
...