Вопрос по windows – Как использовать sql * plus в командном скрипте Windows для управления потоком?

8

Я пытаюсь использовать sql * plus для управления небольшим командным сценарием Windows.

По сути, я хочу выполнить какой-нибудь PL / SQL (возможно, выбрать из представления или таблицы или выполнить функцию), который показывает мне состояние некоторых строк в базе данных, а затем, в зависимости от состояния строк, выполняет некоторые команды Windows.

Моя проблема в том, как вернуть результаты в командный скрипт.

<code>sqlplus user/[email protected] @script.sql

IF <CONDITIONAL HERE BASED on script.sql results> GOTO :runprocess

REM log and email that process had to be skipped
EXIT

:runprocess
REM run various Windows service commands
</code>

Ваш Ответ

6   ответов
7

вероятно, написал сценарий (или условный, в зависимости от требований) из вызываемогоscript.sql сам

Например, следующееscript.sql создает .bat file windows_commands.bat:

set feedback off
set echo off
set trimspool on
set termout off
set serveroutput on size 100000 format wrapped
set lines 500
set pages 0

-- create the bat file to be executed later:
spool windows_commands.bat

declare
  c number;
begin

  select count(*) into c from dual;

  -- depending on a conditional, write the stuff to be executed into the
  -- bat file (windows_commands.bat)
  if c = 1 then
     dbms_output.put_line('@echo everthing ok with dual');
  else
     dbms_output.put_line('@echo something terribly wrong with dual');
  end if;

end;
/

spool off

exit

Вы можете позвонитьscript.sql от еще одного .bat file вот так

@rem create oracle session, call script.sql
sqlplus %user%/%password%@%db% @script.sql

@rem script.sql has created windows_commands.bat.
@rem call this newly created bat file:
call windows_commands.bat
3

н используйте .bat файлы. У вас есть много других альтернатив: C / C ++ или VB, Windows-скриптинг или Powershell или даже бесплатные загрузки, такие как Perl или Bash.

Но вот один из примеров возврата кодов ошибок в файлах .bat:

http: //www.dbforums.com/oracle/1044496-sqlplus-return-value-help.htm

Но, пожалуйста, посмотрите на некоторые ссылки, которые я дал выше. Отказ от файлов .bat облегчит вам задачу и облегчит обслуживание в будущем.

ИМХО ..

5

Мой сценарий .cmd:

@ECHO OFF
ECHO Checking Oracle...

for /f %%i in ('sqlplus -s user/[email protected] @script.sql') do @set count=%%i
echo %count%

IF %count% GTR 0 GOTO :skipped
GOTO :runprocess

Где скрипт.sql:

SELECT COUNT(*)
FROM table
WHERE criteria = 1;

exit
2

создавая файл .bat, который выполняет работу с Windows, и при необходимости вызывает сценарии sql. Используйте SQL, чтобы поместить результаты в текстовый файл, который вы можете прочитать.

... здесь все команды

sqlplus / nolog @C: \ Dump \ DropRecreateUsers.sql

sqlplus / nolog @C: \ Dump \ Cleanup.sql

... душ команды

В sql используйте эту команду spool C: \ yourResults.txt или для более сложного использования создайте процедуру, которая при вызове записывает результаты в текстовый файл, используя UTL_FILE

1

включенными в Oracle XE для резервного копирования и восстановления. Эти сценарии научили меня тому, как работать с пакетными сценариями и Oracle на платформе Windows.

C: \ oraclexe \ приложение \ оракул \ продукт \ 11.2.0 \ сервер \ Bin \ backup.batC: \ oraclexe \ приложение \ оракул \ продукт \ 11.2.0 \ сервер \ Bin \ Restore.bat
0

Oracle Database 11g Enterprise Edition, выпуск 11.2.0.1.0 - 64-битное производство с опциями разделения, OLAP, интеллектуального анализа данных и тестирования реальных приложений

SQL> @f:\testa.txt

Похожие вопросы