Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05 приложение - SQL Plus - win.doc
Скачиваний:
11
Добавлен:
17.08.2019
Размер:
762.88 Кб
Скачать

Запоминание установок среды sql*Plus

Утилита SQL*Plus поддерживает многочисленные установки (см. раздел "Настройка среды SQL*Plus"), которые имеет смысл запоминать между сеансами. Для этого используется команда STORE:

<команда STORE> ::=

STORE SET <имя файла>[.<расширение>] [<режим записи>]

Эта команда записывает значения переменных среды SQL*Plus в командный файл базовой операционной системы:

SQL> store set f:\env

Создано file f:\env

Вот примерное содержимое полученного файла f:\env.sql, созданного в SQL*Plus 8.1.6:

Листинг 1. Типичные установки среды SQL*Plus.

set appinfo OFF

set appinfo "SQL*Plus"

set arraysize 15

set autocommit OFF

set autoprint OFF

set autorecovery OFF

set autotrace OFF

set blockterminator "."

set cmdsep OFF

set colsep " "

set compatibility NATIVE

set concat "."

set copycommit 0

set copytypecheck ON

set define "&"

set describe DEPTH 1 LINENUM OFF INDENT ON

set markup HTML OFF SPOOL OFF ENTMAP ON PRE OFF

set echo OFF

set editfile "afiedt.buf"

set embedded OFF

set endbuftoken ""

set escape OFF

set feedback 6

set flagger OFF

set flush ON

set heading ON

set headsep "|"

set linesize 128

set logsource ""

set long 80

set longchunksize 80

set newpage 1

set null ""

set numformat ""

set numwidth 10

set pagesize 25

set pause OFF

set recsep WRAP

set recsepchar " "

set serveroutput ON size 2000 format WORD_WRAPPED

set shiftinout invisible

set showmode OFF

set sqlblanklines OFF

set sqlcase MIXED

set sqlcontinue "> "

set sqlnumber ON

set sqlprefix "#"

set sqlprompt "SQL> "

set sqlterminator ";"

set suffix "sql"

set tab ON

set termout ON

set time OFF

set timing OFF

set trimout ON

set trimspool OFF

set underline "-"

set verify ON

set wrap ON

Режим записи указывает, будет ли файл просто создан (CREATE, используется по умолчанию), переписан, если существует (REPLACE), или же значения установок среды SQL*Plus будут добавлены в конец существующего файла (APPEND). Полученный командный файл может быть выполнен командой START или ее сокращенными формами (@, @@).

Запись в файл и печать результатов выполнения запросов

Утилита SQL*Plus позволяет сбросить результаты выполнения команд в файл и распечатать их на стандартном принтере. Такой сброс называют спулингом. Для этого используется команда SPOOL (управляющая спулингом) со следующим синтаксисом:

<команда SPOOL> ::=

SPO[OL] [<файл или команда>]

<файл или команда> ::=

<имя файла>[.<расширение>] | OFF | OUT

Команда SPOOL выдает результаты выполнения команд SQL*Plus в указанный файл и, возможно, на стандартный принтер, независимо от их отображения на экране. При вызове без параметров команда выдает состояние спулинга. Если не указано расширение имени файла, используется стандартное расширение (обычно, LST или LIS).

Команда OFF прекращает спулинг. Команда OUT прекращает спулинг и посылает файл на стандартный принтер базовой операционной системы.

Чтобы сбрасываемые в файл результаты не выдавались на экран, необходимо выполнить команду SET TERMOUT OFF.

В листинге 2 представлен пример сценария SQL*Plus, использующего команду SPOOL для выдачи исходного текста хранимой программной единицы в файл с соответствующим именем. Этот файл, в свою очередь, является сценарием, пригодным для повторного создания хранимой программной единицы. Такой прием, - генерация командных файлов в результате выполнения командных файлов - часто используется опытными администраторами баз данных при работе с SQL*Plus.

Листинг 2. Сценарий getcode.sql (c Tom Kyte, http://asktom.oracle.com).

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.