Chciałbym uruchomić skrypt Oracle za pośrednictwem SQL Plus za pomocą wiersza polecenia systemu Windows. Skrypt nie zawiera polecenia „exit”, ale nadal chciałbym, aby SQL Plus zakończył pracę, zwracając kontrolę do wiersza poleceń po zakończeniu skryptu. Moim celem jest zrobienie tego bez modyfikowania skryptu. czy to możliwe?
114
Odpowiedzi:
Innym sposobem jest użycie tego polecenia w pliku wsadowym:
źródło
Uważam, że jest to najlepsze rozwiązanie i działa w terminalu lub w skrypcie:
źródło
Zdając sobie sprawę, że problem może dotyczyć samego pliku sql, zdaj sobie sprawę, że sqlplus musi zostać poproszony o wyjście. Tak to robię:
(Ukośnik jest ważny. Mówi sqlplusowi o wykonaniu statemet (s) powyżej).
źródło
Najlepszym sposobem na ukrycie informacji i wyjść użytkownika jest:
exit
jest dostarczany do wyjścia sqlplus, zmuszając go do wyjścia.-S
pomija wszystkie dane wyjściowe serwera inne niż zapytanie SQL w skrypcie.źródło
Możesz to również zrobić w skrypcie powłoki.
Być może będziesz musiał uciec przed „;” z \.
źródło
Tak, jest to możliwe - wygeneruj skrypt otoki, który odpowiednio skonfiguruje SQLPlus, uwzględni twój skrypt (tj.
@YourTargetScript.sql
), A następnie zakończy działanie.To powiedziawszy, w ogóle nie polecam tego podejścia - SQLPlus ma wiele gotowych do użycia programowego; pisząc w przeszłości skrypty powłoki, które korzystały z Oracle, zbudowałem wokół niego otokę Pythona (dodając bardziej rozsądne zachowanie związane z obsługą błędów, rozsądną separacją danych wyjściowych między stdout / stderr, natywną obsługą wyjścia CSV i innymi tego typu dodatkami) i działało dużo lepiej.
źródło
Lubię to:
Jeśli umieścisz to w pliku wsadowym, kontrola będzie kontynuowana z następującymi po nim instrukcjami.
EDYCJA: Mój zły, spróbuj ponownie z flagą / nolog
źródło
Dla tych, którzy martwią się bezpieczeństwem włączenia hasła do skryptu, AskTom ma artykuł o „zidentyfikowanym zewnętrznie” http: //asktom.oracle.com/pls/apex/f? P = 100: 11: 0 :::: P11_QUESTION_ID: 142212348066
źródło
W skrypcie SQL dodaj EXIT. Oto przykład mojego pliku test.bat:
sqlplus user / pwd @ server @ test.SQL> myLOG.LOG
mój plik test.sql ma: wybierz * z podwójnego; wyjście
źródło
wyjście | SQLPLUS / @ @
To jest właściwe rozwiązanie, próbowałem to działa
źródło