2012-03-28 3 views
0

я создал следующую команду в моем файле .bat:DOS BAT Команда: Проверка SQL PLUS SQL Query

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

В зависимости от результата возвращается, мне нужно разные SQLs. Как мне это сделать?

например. если возвращаемое число результатов равно 0, мне нужно его для выхода из файла .bat. Если набор результатов не равен 0 (1 или> 1), я буду выполнять другой оператор SQL.

Пожалуйста, помогите.

+0

Вы должны научиться PLSQL, а также SQL * PLUS сценариев и поставить свою логику в одном месте. Нет необходимости в переключении контекста (от Oracle до Oracle), как вы описали в своей проблеме. – dbenham

ответ

0

Это зависит от того, как обеспечивается выход, но что-то вроде следующего должно работать:

@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

Спасибо! Я пытаюсь понять ваше заявление. Как я могу сделать это таким образом, что если возвращаемый результат будет равен 0, он будет вызывать пользователя «Нет результатов» перед его выходом? – cooldude

+0

Может быть, я могу создать другой раздел в .BAT-файле? Если набор результатов равен 0, перейдите к разделу 1. Если набор результатов <> 0, перейдите: section2. Как я могу это сделать? – cooldude

+0

Итак, я изменил свой SQL-запрос, чтобы вернуть более уникальное значение, т. Е. VALID или INVALID. Я также с помощью Findstr/C: "VALID" scriptlog.txt> NUL 2> & 1 бэр строка найдена , если код ошибки 0 Гото допустимая строка бэр не найден если Равен 1 Гото недействителен Но я не в состоянии перенаправить утверждение корректно. Правильно ли я делаю это? – cooldude