2009-03-12 3 views
38

Korzystanie z SQL * Plus, można uruchomić skrypt z „@” operatora z linii poleceń, na przykład:Jak mogę wydać pojedyncze polecenie z wiersza poleceń przez sql plus?

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

Ale jest to możliwe tylko uruchomić jednego polecenia z podobną składnię , bez oddzielnego pliku skryptu? Jak w:

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

Jestem zainteresowany tym, ponieważ chcę napisać plik wsadowy, który po prostu wykonuje polecenia, bez generowania pęczek dwuwierszowe plików „.sql”.

Odpowiedz

59

jestem w stanie uruchomić zapytanie SQL poprzez rurociągi go do SQL * Plus:

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

Daj

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

spróbować.

+0

Działa świetnie. Dzięki! – JosephStyons

+1

Co oznacza symbol @ przed echo w tym przypadku? – ivanatpr

+4

@IvanG; W przypadku plików wsadowych systemu Windows symbol @ przed poleceniem powoduje, że polecenie nie jest wysyłane do konsoli. Jest to przydatne w sytuacjach, gdy nie chcesz wyłączyć echa, ale nie chcesz, aby polecenie było wyświetlane na ekranie. W tym przypadku jest to potrzebne, więc to, co zostanie dołączone do polecenia sqlplus, to SQL, który chcemy uruchomić, a nie tekst polecenia. –

13

Próbowałeś czegoś takiego?

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

Wydaje się w systemie UNIX można zrobić:

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

Ale nie jestem pewien, co okna odpowiednik że będzie.

+0

Uwaga, w systemie UNIX (i prawdopodobnie Windows), naprawdę powinnaś t kiedykolwiek składnia nazwy użytkownika/hasła, która ujawni twoje hasło każdemu użytkownikowi w systemie. Jeśli chcesz, użyj zewnętrznego autoryzacji. –

+1

Symbol JosephStyons

+2

linia poleceń będzie widoczna dla innych użytkowników os (np.) 'Ps -ef', jeśli musisz podać nazwę użytkownika i hasło, lepiej wykonać polecenie" sqlplus/nolog << EOF "i mieć pierwszy wiersz" połącz nazwę użytkownika /hasło". Nie jest to idealne rozwiązanie, ale lepsze jest to, że przynajmniej nie ujawnia jawnej nazwy użytkownika i hasła na wyjściu z 'ps -ef' – spencer7593

5

SQLPLUS użytkownik/hasło @ sid < sqlfile.sql

będzie również działać z linii poleceń DOS. W tym przypadku plik sqlfile.sql zawiera SQL, który chcesz uruchomić.

-6

To jest jak I rozwiązać problem:

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

Opisz dokładniej swoją odpowiedź, gdzie to ustawić i jak to naprawi błąd itp. – Ravimallya

8

dla systemu 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 
-1
@find /v "@" < %0 | sqlplus -s scott/[email protected] & goto :eof 

select sysdate from dual; 
+1

Proszę podać więcej szczegółów, proszę odpowiedzieć. – maxshuty

Powiązane problemy