2012-03-28 11 views
0

ich den folgenden Befehl in meiner .bat Datei erstellt hatte:DOS BAT Befehl: Überprüfen der SQL PLUS SQL Query

@echo select count(*) from table where column1 = 'abc'; | sqlplus username/[email protected] 

auf das Ergebnis je zurückgekehrt, ich brauche es anders SQLs. Wie kann ich es tun?

z.B. Wenn das zurückgegebene Resultset 0 ist, muss ich die .bat-Datei beenden. Wenn das Resultset nicht 0 ist (1 oder> 1), führe ich eine andere SQL-Anweisung aus.

Bitte helfen.

+0

Sie sollten PLSQL lernen sowie SQL * PLUS-Scripting und setzen Sie Ihre Logik in einem Ort. Es besteht keine Notwendigkeit für Kontextwechsel (Batch zu Oracle zu Batch zu Oracle), wie Sie in Ihrem Problem beschreiben. – dbenham

Antwort

0

Es hängt davon ab, wie die Ausgabe vorgesehen ist, aber so etwas wie die folgenden funktionieren sollte:

@echo off 
set tempfile=%temp%\%random%.log 
echo select count(*) from table where column1 = 'abc'; | sqlplus username/[email protected] > "%tempfile%" 
findstr /c:"INVALID" "%tempfile%" >nul 2>&1 && echo No resultset || echo some other statement | sqlplus username/[email protected] 
+0

Danke! Ich versuche deine Aussage zu verstehen. Wie kann ich es so, dass, wenn die zurückgegebene Ergebnismenge 0 ist, wird der Benutzer „Nein resultset“ auffordern, bevor es beendet? – cooldude

+0

Vielleicht kann ich einen anderen Abschnitt in der .BAT-Datei erstellen? Wenn das Resultset 0 ist, gehe zu: section1. Wenn das Resultset <> 0 ist, gehe zu: section2. Wie kann ich das machen? – cooldude

+0

Also hatte ich meine SQL-Abfrage geändert, um einen eindeutigeren Wert zurückzugeben, d. H. VALID oder INVALID. Ich verwende auch findstr/c: if Errorlevel 0 goto gültig rem Zeichenfolge nicht gefunden "VALID" scriptlog.txt> nul 2> & 1 rem String wird gefunden, wenn Errorlevel 1 goto ungültig Aber ich bin nicht in der Lage, die Anweisung korrekt umzuleiten. Mache ich es richtig? – cooldude