Подтвердить что ты не робот

Как я могу выдать одну команду из командной строки через sql plus?

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

c:\>sqlplus username/[email protected] @"c:\my_script.sql"

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

c:\>sqlplus username/[email protected] @execute some_procedure

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

4b9b3361

Ответ 1

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

@echo select count(*) from table; | sqlplus username/[email protected]

Дайте

@echo execute some_procedure | sqlplus username/[email protected]

попробуйте.

Ответ 2

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

sqlplus username/[email protected] < "EXECUTE some_proc /"

Похоже, что в UNIX вы можете:

sqlplus username/[email protected] <<EOF
EXECUTE some_proc;
EXIT;
EOF

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

Ответ 3

Для 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/[email protected]$DBNAME

Ответ 4

sqlplus user/password @sid < sqlfile.sql

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

Ответ 5

@find /v "@" < %0 | sqlplus -s scott/[email protected] & goto :eof

select sysdate from dual;

Ответ 6

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

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