Утилита SQL*Plus позволяет сбросить результаты выполнения команд в файл и распечатать их на стандартном принтере. Такой сброс называют спулингом. Для этого используется команда SPOOL (управляющая спулингом) со следующим синтаксисом:
<команда SPOOL> ::=
SPO[OL] [<файл или команда>]
<файл или команда> ::=
<имя файла>[.<расширение>] | OFF | OUT
Команда SPOOL выдает результаты выполнения команд SQL*Plus в указанный файл и, возможно, на стандартный принтер, независимо от их отображения на экране. При вызове без параметров команда выдает состояние спулинга. Если не указано расширение имени файла, используется стандартное расширение (обычно, LST или LIS).
Команда OFF прекращает спулинг. Команда OUT прекращает спулинг и посылает файл на стандартный принтер базовой операционной системы.
Чтобы сбрасываемые в файл результаты не выдавались на экран, необходимо выполнить команду .
В представлен пример сценария SQL*Plus, использующего команду SPOOL для выдачи исходного текста хранимой программной единицы в файл с соответствующим именем. Этот файл, в свою очередь, является сценарием, пригодным для повторного создания хранимой программной единицы. Такой прием,- генерация командных файлов в результате выполнения командных файлов - часто используется опытными администраторами баз данных при работе с SQL*Plus.
Листинг 2. Сценарий getcode.sql (© Tom Kyte, ).
set feedback off set heading off set termout off set linesize 1000 set trimspool on set verify off spool &1..sql
prompt set define off select decode( type'-'to_char(line,'fm99999'), 'PACKAGE BODY-1', '/'chr(10), null) decode(line,1,'create or replace ', '' ) text text from user_source where name = upper('&&1') order by type, line; prompt / prompt set define on spool off
set feedback on set heading on set termout on set linesize 100
Вызывать данный сценарий можно, например, так:
SQL> @f:\getcode ListBlackFridays
Примечание
На платформе Windows при использовании оконной версии SQL*Plus (sqlplusw.exe) файл, указанный в команде SPOOL, по умолчанию (если не задан полный путь) создается в каталоге %ORACLE_HOME%\bin. Вряд ли это подходящее место для таких файлов...
Мы еще вернемся к сценарию getcode.sql в следующих разделах, посвященных параметрам и настройке среды SQL*Plus.