Утиліта SQL * Plus. Створення та виконання сценаріїв. Частина III

Параметри командних файлів


Утиліта SQL * Plus дозволяє створювати командні файли, що запитують у користувача параметри і підставляти їх значення в команди по ходу виконання. Для цього використовуються т.зв. змінні . Такі змінні визначаються в командному файлі, зокрема, за допомогою команди DEFINE. На змінні можна посилатися в командах, випереджаючи їх ім'я символами & або &&. Конструкцію &<Ім'я змінної> називають підставляється змінної.


Команди DEFINE і UNDFEFINE


Команда DEFINE дозволяє визначити для користувача змінну строкового типу і задати їй значення типу CHAR, Або отримати значення певної або всіх користувальницьких змінних. Ця команда має такий синтаксис:



<Команда DEFINE>:: =
DEF[INE] [<Ім'я змінної> [= <Текст>]]

Якщо текст, який присвоюється змінної, містить прогалини або символи пунктуації, його треба брати в апострофи.


При виклику без значення, команда DEFINE видає значення змінної. Команда DEFINE без параметрів видає значення всіх користувальницьких змінних SQL * Plus, включаючи системні. Розглянемо приклад:

SQL> define a=text
SQL> define a
DEFINE A = “text” (CHAR)
SQL> define b=5
SQL> define
DEFINE _SQLPLUS_RELEASE = “801060000” (CHAR)
DEFINE _EDITOR = “Notepad” (CHAR)
DEFINE _O_VERSION = "Oracle8i Enterprise Edition Release 8.1.6.0.0 –
Production
With the Partitioning option
JServer Release 8.1.6.0.0 – Production” (CHAR)
DEFINE _O_RELEASE = “801060000” (CHAR)
DEFINE A = “text” (CHAR)
DEFINE B = “5” (CHAR)
SQL>

Як бачите, утиліта SQL * Plus автоматично визначає ряд системних користувальницьких змінних.


Для видалення як явно певної користувача змінної, так і параметра командного рядка сценарію (див. опис команди START вище) використовується команда UNDEFINE. Після застосування цієї команди до змінної значення змінної втрачається, і вона стає невизначеною. Команда UNDEFINE має наступний простий синтаксис:



<Команда UNDEFINE>:: =
UNDEF[INE] <Ім'я змінної> {<ім'я змінної>}

Продовжуючи попередній приклад:

SQL> undefine a b
SQL> define a
SP2-0135: символ a UNDEFINED
SQL>

Використання підставляється змінних


Підставляємо змінну можна використовувати в будь-якому місці команди SQL * Plus або SQL-оператора, крім першого слова в командному рядку (по першому слову утиліта SQL * Plus визначає тип команди). Коли SQL * Plus зустрічає в командному рядку підставляємо змінну, вона підставляє значення цієї змінної (запитуючи його, якщо змінна не визначена). Використовуються підставляються змінні для отримання більш гнучких, інтерактивних сценаріїв SQL * Plus. Розглянемо простий приклад:

SQL> select &func.(&col.) from &tab;
Введіть значення для func: max
Введіть значення для col: sal
Введіть значення для tab: emp
колишній 1: select & func. (& col.) from & tab
новий 1: select max (sal) from emp

MAX(SAL)
———
5000


Як бачите, якщо в команді зустрічається не певна явно раніше яка пiдставляється мінлива, SQL * Plus запитує її значення. Потім на екран видається вид команди до і після підстановки всіх значень (це можна відключити за допомогою команди SET VERIFY OFF), І команда виконується. У нашому прикладі ми підставили в команду конкретну функцію агрегування, ім'я стовпця, по якому ви агрегування, і ім'я таблиці.


Зверніть увагу, що якщо необхідно вставити значення підставляється змінної перед не пробільних символів, необхідно вказати крапку (.) Після імені змінної.


У відповідь на запит значення можна ввести будь-який рядок, у тому числі з пробілами. Якщо значення має бути взято в апострофи і ці апострофи не вказані явно в команді з підставляється змінної, необхідно буде ввести значення в апострофа.


SQL * Plus читає дані з клавіатури, навіть якщо вхідний і вихідний потоки терміналу перенаправлені у файли. Якщо ж сценарій запущений в пакетному режимі, дані читаються з відповідного файлу.


Якщо введене значення збігається з підставляється змінної (починається з &), То (принаймні, у версії 8.1.6) видається повідомлення про помилку:

SQL> define emp = dept
SQL> select * from &tab;
Введіть значення для tab: &emp
колишній 1: select * from & tab
новий 1: select * from & emp
SP2-0552: Мінлива прив'язки "EMP" не описана.

Підстановка без повторного запиту


Якщо використовувати одну й ту ж підставляємо змінну з символом & в одній команді кілька разів, значення буде запитуватися щоразу заново:

SQL> select max(&col), avg(&col), min(&col) from &tab;
Введіть значення для col: sal
Введіть значення для col: sal
Введіть значення для col: sal
Введіть значення для tab: emp
колишній 1: select max (& col), avg (& col), min (& col) from & tab
новий 1: select max (sal), avg (sal), min (sal) from emp

MAX(SAL) AVG(SAL) MIN(SAL)
———- ———- ———-
5000 2073,21429 800


Щоб значення змінної вимагався лише один раз, використовується підстановка з двома амперсанд (&&):

SQL> c /(&col/(&&col
1* select max(&&col), avg(&col), min(&col) from &tab
SQL> c /(&col/(&&col
1* select max(&&col), avg(&&col), min(&col) from &tab
SQL> c /(&col/(&&col
1* select max(&&col), avg(&&col), min(&&col) from &tab
SQL> /
Введіть значення для col: sal
Введіть значення для tab: emp
колишній 1: select max (& & col), avg (& & col), min (& & col) from & tab
новий 1: select max (sal), avg (sal), min (sal) from emp

MAX(SAL) AVG(SAL) MIN(SAL)
———- ———- ———-
5000 2073,21429 800


Підстановка параметрів командних файлів


Підстановка змінних виконується і для позиційних параметрів, переданих при виклику сценарію. На ці параметри можна посилатися як на &1, &2 і т.д. Якщо значення для них у командному рядку не передано, SQL * Plus запитує значення при виклику сценарію. Підстановка позиційних параметрів виконується тільки при виклику сценарію командами START (Або її скороченими формами @, @@).


Розглянемо приклад:

SQL> clear buffer
buffer очищена
SQL> input
1 select &1 from &2
2 .
SQL> save f:subst.sql
Створено файл f: subst.sql
SQL> @f:subst max(sal) emp
колишній 1: select & 1 from & 2
новий 1: select max (sal) from emp

MAX(SAL)
———-
5000
SQL> @f:subst
колишній 1: select & 1 from & 2
новий 1: select max (sal) from emp

MAX(SAL)
———-
5000
SQL> undef 1 2
SQL> @f:subst
Введіть значення для 1: min (sal)
Введіть значення для 2: emp
колишній 1: select & 1 from & 2
новий 1: select min (sal) from emp

MIN(SAL)
———-
800


Обмеження


Підставляються змінні не можна використовувати в командах редагування буфера SQL (APPEND, CHANGE, DEL, INPUT) І в інших командах, де ця підстановка "не має сенсу", зокрема, в коментарях. Команди редагування буфера вважають символ & звичайним і використовують його буквально (див. приклад вище).


Системні змінні, що впливають на підстановку


У табл. 13 представлені системні установки, що впливають на підстановку користувальницьких змінних.


Таблиця 13. Системні установки, що впливають на підстановку змінних.



















Установка  Опис 
SET DEFINE  Задає символ підстановки (замість стандартного – &) І дозволяє включати і відключати підстановку.
SET ESCAPE  Задає символ маскування, що дозволяє маскувати символ підстановки. Стандартним символом маскування є зворотна коса ().
SET VERIFY  Дозволяє включати і відключати видачу кожного рядка команди до і після підстановки користувальницьких змінних.
SET CONCAT  Задає символ, що відокремлює ім'я підставляється змінної від наступній безпосередньо за ним рядка. За замовчуванням використовується крапка (.).

Взаємодія з користувачем


Стандартний механізм запиту значень користувальницьких змінних дає обмежені засоби взаємодії з користувачем – введення значень у відповідь на стандартні запрошення. Утиліта SQL * Plus дозволяє управляти видачею повідомлень і запитом значень змінних.


Команда PROMPT


Для видачі на екран довільного тексту використовується команда PROMPT з наступним синтаксисом:



<Команда PROMPT>:: =
PRO[MPT] [<Текст>]

Вона видає зазначений текст або пустий рядок (при виклику без параметрів). Якщо необхідно видати кілька рядків, для кожного рядка виконується окрема команда PROMPT.


Команда ACCEPT


Вважати рядок і запам'ятати її у вказаній користувача змінної певного типу (видаючи, при необхідності, запрошення) дозволяє команда ACCEPT з наступним синтаксисом:



<Команда ACCEPT>:: =
ACC[EPT] <Ім'я змінної> [<тип змінної>]
  [FOR[MAT] <Формат>] [DEF[AULT] <Стандартне значення>]
[<Запрошення>] [HIDE]
<Тип змінної>:: =
NUM[BER] / CHAR / DATE
<Запрошення>:: =
PROMPT <Текст> / NOPR[OMPT]

Якщо зазначена в команді ACCEPT користувальницька змінна не існує, SQL * Plus створює її. Опції команди ACCEPT описані в табл. 14.

Таблиця 14. Опції команди ACCEPT.































Опція  Призначення 
NUMBER  Визначає змінної тип NUMBER. Якщо введене значення не приводиться до цього типу, команда ACCEPT видає повідомлення про помилку і запитує значення знову.
CHAR  Визначає змінної тип CHAR. Довжина рядка-значення не має перевищувати 240 байтів.
DATE  Визначає змінної тип DATE. Якщо введене значення не перетвориться в тип DATE з урахуванням поточного формату дати в сеансі (NLS_DATE_FORMAT), Команда ACCEPT видає повідомлення про помилку і запитує значення знову.
FORMAT  Явно задає формат, якому має відповідати введене значення. Формат задається так само, як для команди COLUMN. Якщо значення не відповідає формату, команда ACCEPT видає повідомлення про помилку і запитує значення знову.
DEFAULT  Задає стандартне значення, якщо воно не буде введено. Стандартне значення має відповідати стандартному чи вказаною формату.
PROMPT  Видає на екран зазначений текст перед очікуванням введення значення змінної.
NOPROMPT  Видає переклад рядка і чекає вводу значення, не видаючи запрошень.
HIDE  Пригнічує видачу значення, що вводиться на екран по ходу введення.

Розглянемо простий приклад спільного використання команд PROMPT і ACCEPT. Нехай є командний файл splus1.sql , наступного змісту:

 REM splus1.sql – приклад діалогу з користувачем
prompt
prompt Input department number (10, 20, 30)
accept dept_number number prompt “Dept. #: “

select * from dept
where deptno = &dept_number;


Ось що відбувається при його виконанні:

SQL> @f:usrdocorasdevsplus1

Input department number (10, 20, 30)
Dept. #: q
SP2-0425: "q" не є допустимим числом
Dept. #: 10
колишній 2: where deptno = & dept_number
новий 2: where deptno = 10

DEPTNO DNAME LOC
———- ————– ————-
10 ACCOUNTING NEW YORK


Команда PAUSE


Команда PAUSE дозволяє дочекатися підтвердження того, що користувач прочитав повідомлення на екрані, видане командою PROMPT. Для підтвердження необхідно натиснути клавішу Enter, після чого виконання сценарію або сеансу SQL * Plus продовжиться.


Команда PAUSE має наступний синтаксис:



<Команда PAUSE>:: =
PAU[SE] [<Текст>]

Ця команда видає порожню рядок, потім рядок тексту, якщо він зазначений, або ще один порожній рядок, і чекає підтвердження від користувача. Введення ця команда чекає з терміналу (при інтерактивному запуску), навіть якщо вхідний і вихідний потоки перенаправлені. При роботі в пакетному режимі для продовження необхідна наявність нового рядка у файлі, звідки береться вхідний потік.


Розглянемо простий приклад. Змінимо файл splus1.sql наступним чином:

set verify off
prompt Input department number (10, 20, 30)
accept dept_number number prompt “Dept. #: ”
pause Press Enter to view results

select * from dept
where deptno = &dept_number;


Ось що буде видано при його виконанні:

SQL> @f:splus1
Input department number (10, 20, 30)
Dept. #: 30
Press Enter to view results

DEPTNO DNAME LOC
———- ————– ————-
30 SALES CHICAGO


Для отримання результатів довелося натиснути клавішу Enter після висновку відповідного запрошення.


Зв'язуються змінні


Зв'язуються перемінні – це створювані в SQL * Plus змінні, на які можна посилатися (як на хост-змінні) в блоках PL / SQL. Таким змінним можна, наприклад, присвоювати значення в блоках PL / SQL або використовувати їх значення у включених в блоки SQL-операторах. Значення пов'язують змінних можна потім видавати в SQL * Plus.


Команда VARIABLE


Для створення пов'язують змінної використовується команда VARIABLE з наступним синтаксисом:



<Команда VARIABLE>:: =
VAR[IABLE] [<Ім'я змінної> [<тип даних>]]
<Тип даних>:: =
NUMBER
  / CHAR [(<Кількість> [<одиниця виміру>])]
  / NCHAR [(<Кількість>)]
  / VARCHAR2 (<Кількість> [<одиниця виміру>])
  / NVARCHAR2 (<Кількість>)   / CLOB
  / NCLOB
  / REFCURSOR
<Одиниця виміру>:: =
CHAR / BYTE

При виклику без параметрів команда VARIABLE видає список всіх змінних, створених у сеансі. Якщо вказати тільки ім'я змінної, видається інформація тільки про цієї змінної.


Зв'язуються змінні можна використовувати як параметри збережених процедур або безпосередньо, в анонімних PL / SQL-блоках. Їх не можна використовувати в команді COPY або присвоїти їм значення в SQL-операторах, що не входять в PL / SQL-блоки. Замість пов'язаної змінної, що не отримала явно значення, при необхідності підставляється значення NULL.


Розглянемо простий приклад використання пов'язують змінних:

SQL> var
SP2-0568: Не оголошені змінні прив'язки.
SQL> var dep number
SQL> begin
2 select deptno into :dep from emp
3 where sal = (select max(sal) from emp);
4 end;
SQL> /

Процедура PL / SQL успішно завершена.

SQL> select * from dept where deptno = :dep;

DEPTNO DNAME LOC
———- ————– ————-
10 ACCOUNTING NEW YORK

SQL> var dep2 number
SQL> c /:dep/:dep2
1* select * from dept where deptno = :dep2
SQL> /

рядки не вибрані

SQL> var
мінлива dep
тип даних NUMBER

мінлива dep2
тип даних NUMBER


Ми використовували зв'язувану змінну для передачі значення з одного оператора SQL в інший, так і не видавши його на екран. Щоб значення використовуваних в команді пов'язують змінних видавалися автоматично, необхідно виконати команду SET AUTOPRINT ON.


Типи даних для пов'язують змінних аналогічні відповідним типам даних PL / SQL. Змінні типу REFCURSOR дозволяють працювати з курсорними змінними PL / SQL. Утиліта SQL * Plus обробляє зв'язуються змінні такого типу особливим чином. Курсор, відповідний курсорною змінної, відкривається явно, а закривається після видачі значення або при завершенні сеансу. При видачі значення на екран видається результуюче безліч відповідного запиту. Розглянемо приклад:

SQL> set autoprint on
SQL> var a refcursor;
SQL> begin
2 open :a for select * from dept;
3 end;
4 /

Процедура PL / SQL успішно завершена.

DEPTNO DNAME LOC
———- ————– ————-
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 TRAINING KIEV

SQL> exec open :a for select ename, sal from emp where deptno = :dep;

Процедура PL / SQL успішно завершена.

DEP
———-
10

ENAME SAL
———- ———-
CLARK 2450
KING 5000
MILLER 1300


Результати, що видаються при показі значень пов'язують змінної типу REFCURSOR можна форматувати так само, як і результати виконання SQL-оператора SELECT. Значення такої змінної видається тільки один раз, – потім результуюче безліч треба вибирати повторно.


Для явною видачі на екран значення пов'язують змінної використовується команда PRINT.


Команда PRINT


Команда PRINT має наступний синтаксис:



<Команда PRINT>:: =
PRI[NT] {<Ім'я змінної>}

Ця команда видає поточне значення перерахованих пов'язують змінних. При виклику без параметрів видаються значення всіх пов'язують змінних.


Продовжуючи попередній приклад:

SQL> print a
SP2-0625: Помилка друку змінних "a"
SQL> print

DEP
———-
10

DEP2
———-

SP2-0625: Помилка друку змінних "a"
SQL> set autoprint off
SQL> exec open: a for select ename, sal, comm from emp where deptno =: dep;

Процедура PL / SQL успішно завершена.

SQL> print dep a

DEP
———-
10

ENAME SAL COMM
———- ———- ———-
CLARK 2450
KING 5000
MILLER 1300


Трасування операторів


Утиліта SQL * Plus дозволяє автоматично отримувати звіт про спосіб виконання оператора, обраному оптимізатором SQL, а також статистичну інформацію про виконання. Цей звіт видається після успішного виконання операторів SELECT, INSERT, UPDATE і DELETE. Такий звіт корисний для контролю і настройки продуктивності цих операторів.


Для керування даним звітом використовується команда SET AUTOTRACE. Ця команда має п'ять опцій:



















OFF  Звіт не видається. Це стандартний режим роботи SQL * Plus.
ON EXPLAIN  Видається тільки вибраний оптимізатором план виконання оператора.
ON STATISTICS  Видається тільки статистична інформація про виконання оператора.
ON  Видається план виконання запиту і статистична інформація про виконання оператора.
TRACEONLY  Видається звіт про статистику, але не видаються результати виконання оператора. Використовується для трасування запитів, які повертають великі обсяги даних.

Для використання цієї можливості SQL * Plus необхідно створити у схемі користувача таблицю PLAN_TABLE і отримати роль PLUSTRACE (Надати її може тільки DBA). Виконаємо такі дії:

SQL> set autotrace on
SP2-0613: Неможливо перевірити формат або існування PLAN_TABLE
SP2-0611: Помилка розблокування EXPLAIN report
SP2-0618: Неможливо знайти Ідентифікатор Сеансу. Перевірте,
чи дозволено роль PLUSTRACE
SP2-0611: Помилка розблокування STATISTICS report

Як бачите, за умовчанням ця можливість не підтримується. Створимо таблицю за допомогою сценарію $ORACLE_HOME/rdbs/admin/utlxplan.sql:

SQL> @g:oracleora81
dbmsadminutlxplan

Таблиця створена.


Потім створимо роль PLUSTRACE, дамо їй необхідні привілеї, а потім надамо її ролі DBA (за допомогою сценарію $ORACLE_HOME/sqlplus/admin/plustrce.sql):

SQL> connect system/manager as sysdba
Зв'язано.
SQL> @g:oracleora81sqlplusadminplustrce
SQL>
SQL> drop role plustrace;
drop role plustrace
*
помилка в рядку 1:
ORA-01919: роль "PLUSTRACE" не існує

SQL> create role plustrace;

Роль створена.

SQL>
SQL> grant select on v_$sesstat to plustrace;

Привілеї надані.

SQL> grant select on v_$statname to plustrace;

Привілеї надані.

SQL> grant select on v_$session to plustrace;

Привілеї надані.

SQL> grant plustrace to dba with admin option;

Привілеї надані.

SQL> set echo off


Тепер надамо роль PLUSTRACE користувачеві, який буде використовувати трасування:

SQL> grant plustrace to scott;

Привілеї надані.


Перевіряємо, що трасувальні звіт тепер видається:

SQL> connect scott/tiger
Зв'язано.
SQL> set autotrace on
SQL> set pagesize 25
SQL> select ename, dname, sal
2 from emp, dept
3 where emp.deptno = dept.deptno;

ENAME DNAME SAL
———- ————– ———-
SMITH RESEARCH 800
ALLEN SALES 1600
WARD SALES 1250
JONES RESEARCH 2975
MARTIN SALES 1250
BLAKE SALES 2850
CLARK ACCOUNTING 2450
SCOTT RESEARCH 3000
KING ACCOUNTING 5000
TURNER SALES 1500
ADAMS RESEARCH 1100
JAMES SALES 950
FORD RESEARCH 3000
MILLER ACCOUNTING 1300

14 рядків обрано.

План виконання
———————————————————-
0 SELECT STATEMENT Optimizer = CHOOSE (Cost = 3 Card = 2 Bytes = 88)
1 0 HASH JOIN (Cost=3 Card=2 Bytes=88)
2 1 TABLE ACCESS (FULL) OF “DEPT” (Cost=1 Card=4 Bytes=44)
3 1 TABLE ACCESS (FULL) OF “EMP” (Cost=1 Card=41 Bytes=1353)

Статистика
———————————————————-
62 recursive calls
8 db block gets
6 consistent gets
0 physical reads
0 redo size
1267 bytes sent via SQL*Net to client
424 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
14 rows processed


Детальніше використання можливостей трасування в SQL * Plus розглянуто в окремому модулі, присвяченому налаштуванню продуктивності.


Налаштування середовища SQL * Plus


Середа SQL * Plus – дуже гнучка і має широкі можливості налаштування за вимогами користувача. Ці настройки виконуються, в основному, за допомогою команди SET. Ми неодноразово використовували команду SET в прикладах даного модуля. У наступному розділі представлено її формальний опис.


Команда SET


Команда SET дозволяє встановити системну змінну, змінює властивості середовища SQL * Plus для поточного сеансу. Вона має наступний синтаксис:



<Команда SET>:: =
SET <Системна змінна> <значення>

Імена, опису та можливі значення основних системних змінних для команди SET представлені в табл. 15.

Таблиця 15. Основні системні змінні SQL * Plus
























































































































































































































Мінлива  Значення  Призначення 
APPI[NFO ON / OFF / <Текст> Встановлює автоматичну реєстрацію командних файлів за допомогою пакету DBMS_APPLICATION_INFO. Це дозволяє контролювати продуктивність і використання ресурсів кожним командним файлом. При відключеній реєстрації файлів в якості імені модуля використовується рядок "SQL * Plus" або заданий в цій змінній текст. За замовчуванням реєстрація відключена.
ARRAY[SIZE <Розмір пакета> Встановлює розмір пакету рядків, видобутих утилітою SQL * Plus з бази даних за один прийом. Діапазон допустимих значень – від 1 до 5000. За замовчуванням витягується по 15 рядків.
AUTO[COMMIT ON / OFF / IMM[EDIATE] / <К-сть операторів> Управляє фіксацією змін в базі даних. За замовчуванням (OFF) Зміни необхідно фіксувати явно. Зміни можуть фіксуватися негайно після успішного виконання оператора або блоку (ON, IMM), Або після успішного виконання зазначеної кількості операторів або блоків PL / SQL. Значення має бути в діапазоні від 0 до 2000000000.
AUTOP[RINT ON / OFF  Встановлює автоматичну видачу значень використаних в команді пов'язують змінних.
AUTORECOVERY  ON / OFF  При встановленні значення ON команда RECOVER буде автоматично використовувати стандартні імена файлів архівних журналів повторного виконання. За замовчуванням, імена файлів при відновленні доведеться вводити вручну, у відповідь на запити SQL * Plus.
AUTOT[RACE ON / OFF / TRACE[ONLY] [EXP[LAIN]] [STAT[ISTICS]] Управляє видачею звіту про виконання успішного оператора SELECT, INSERT, UPDATE або DELETE. У звіт може включатися план виконання і статистична інформація про виконані дії.
BLO[CKTERMINATOR . / <Символ> Задає не алфавітно-цифровий символ, використовуваний для завершення блоку PL / SQL. За замовчуванням використовується крапка.
CMDS[EP ; / ON / OFF / <Символ> Задає не алфавітно-цифровий символ, використовуваний для розділення декількох команд SQL * Plus в одному рядку. ON/OFF управляє можливістю обробки декількох команд в рядку. Значення ON означає, крім того, установку стандартного розділювача – точки з комою.
COLSEP  <Текст> Задає текст, який буде видаватися між обраними стовпцями. Якщо текст містить пробіли або символи пунктуації, його необхідно брати в апострофи. За замовчуванням використовується один пробіл.
COM[PATIBILITY V7 / V8 / NATIVE  Визначає версію Oracle, до якої підключена утиліта SQL * Plus. Значення NATIVE, Прийняте за замовчуванням, вказує, що версія визначається базою даних.
CON[CAT . / ON / OFF / <Символ> Задає символ, який дозволяє відокремити ім'я підставляється змінної від іншої частини рядка. Стандартний символ – крапка.
COPYC[OMMIT <К-сть пакетів> Визначає кількість пакетів (розмір задається системної змінної ARRAYSIZE), Після копіювання яких команда COPY фіксує зміни в базі даних. Значення має бути в діапазоні від 0 до 5000. При використанні стандартного значення, 0, фіксація виконується тільки після завершення копіювання.
DEF[INE & / ON / OFF / <Символ> Задає символ-префікс підставляється змінної. При вказівці значення ON використовується стандартний префікс – &.
DESC[RIBE [DEPTH 1 / ALL / <Глибина>]
[LINENUM ON / OFF]
[INDENT ON / OFF]
Вказує кількість рівнів рекурсивного опису об'єкту. Допустимі значення від 1 до 50. ALL означає максимальну кількість рівнів, 50. Можна також вказувати номер рядка та відступи для імені стовпця або атрибуту, коли об'єкт містить кілька компонентів об'єктних типів.
ECHO  ON / OFF  Управляє видачею на екран кожної команди в командному файлі, що виконується за допомогою START.
EDITF[ILE <Ім'я файлу> [.<Розширення>] Встановлює стандартне ім'я файлу для команди EDIT.
EMB[EDDED ON / OFF  Визначає видачу кожного нового звіту з нової сторінки (стандартне значення, OFF) Або як продовження на поточній сторінці (ON).
ESC[APE / ON / OFF / <Символ> Визначає маскує символ. Значення ON задає стандартний маскує символ, зворотну косу.
FEED[BACK ON / OFF / <К-ть рядків> Управляє видачею кількості рядків, повернутих запитом. Інформація видається, якщо повернуто не менше зазначеної кількості рядків. Значення ON еквівалентно 1.
FLU[SH ON / OFF  Управляє буферизацією результатів. При стандартному значенні ON результати видаються клієнту негайно.
HEA[DING ON / OFF  Управляє видачею заголовків стовпців в результатах.
HEADS[EP / / ON / OFF / <Символ> Задає символ перекладу рядка для команд, які задають колонтитули. Можна задавати будь-який символ, крім алфавітно-цифрових і пробіл. За замовчуванням використовується вертикальна риса.
LIN[ESIZE <Довжина рядка> Задає кількість символів в видається рядку. Якщо видається рядок довше, залишок переноситься на новий рядок. Це значення також використовується для вирівнювання колонтитулів і заголовків звітів.
LOGSOURCE  [<Шлях>] Визначає місцезнаходження архівних файлів журналу повторного виконання для відновлення. Якщо значення не вказано, буде використовуватися шлях, вказаний у файлі параметрів ініціалізації.
LONG  <Ширина стовпця> Визначає максимальну ширину (у байтах) для видачі значень типу LONG, CLOB і NCLOB (А також для копіювання значень типу LONG). Значення не може перевищувати 2 Гбайта.
NEWP[AGE NONE / <К-ть рядків> Вказує кількість порожніх рядків, які видаються на початку сторінки звіту, перед верхнім колонтитулом. Стандартне значення – 1 рядок. Якщо вказано значення NONE, Порожні рядки не видаються. Якщо ж зазначено значення 0, при друці пропускається сторінка, а при видачі на екран він очищається.
NULL  <Текст> Задає текст, який представляє пусте значення в результатах виконання оператора SELECT.
NUMF[ORMAT <Формат> Визначає стандартний формат видачі чисел (про формати див в описі команди COLUMN)
NUM[WIDTH <Ширина> Визначає стандартну ширину числових стовпців.
PAGES[IZE <К-ть рядків> Вказує кількість рядків на сторінці. Якщо встановити значення 0, пригнічується видача заголовків, колонтитулів і початкових порожніх рядків.
PAU[SE ON / OFF / <Текст> Дозволяє управляти прокруткою при показі звітів. При встановленні значення ON, Утиліта SQL * Plus призупиняє роботу перед виведенням кожної сторінки звіту, очікуючи натискання клавіші Enter. Можна також задати текст, який буде при цьому виводитися.
RECSEP  WR[APPED] / EA[CH] / OFF  Встановлює видачу роздільників між записами (після перенесених на кілька рядків, після всіх або ніколи).
RECSEPCHAR  <Символ> Задає символ, з якого складається роздільник записів. За замовчуванням використовується пропуск. Роздільник записів є рядком символів RECSEPCHAR, Повторених LINESIZE разів.
SERVEROUT[PUT ON / OFF
[SIZE <К-ть рядків>]
[FOR[MAT] WRA[PPED] / WOR[D_WRAPPED] / TRU[NCATED]]
Управляє показом результатів збережених процедур або анонімних блоків PL / SQL (виданих за допомогою пакету DBMS_OUTPUT), Розміром буфера і перенесенням рядків. Розмір буфера повинен бути в межах від 2000 (стандартне значення) до 1000000.
SHOW[MODE ON / OFF  Управляє видачею значень системних змінних при зміні. Якщо задано значення ON, При зміні видається старе та нове значення.
SQLBL[ANKLINES ON / OFF  Дозволяє або забороняє використання порожніх рядків в сценаріях і командах SQL.
SQLC[ASE MIX[ED] / LO[WER] / UP[PER] Управляє зміною регістра символів в команді перед виконанням. За замовчуванням (MIXED) Регістр символів залишається незмінним. Інакше всі символи, включаючи літерали в лапках, переводяться до відповідного регістр. Вміст буфера SQL при цьому не змінюється.
SQLCO[NTINUE <Текст> Задає текст, що видається утилітою SQL * Plus як запрошення для продовження введення команди. За замовчуванням використовується символ>.
SQLN[UMBER ON / OFF  Управляє видачею запрошення для введення другої і наступних рядків команди чи блоку PL / SQL. Якщо вказано значення ON, Як запрошення видається номер рядка, якщо OFF – Значення системної змінної SQLPROMPT.
SQLPRE[FIX <Символ> Визначає префіксний символ SQL * Plus (за замовчуванням – #). Якщо по ходу введення команди чи блоку PL / SQL ввести в окремому рядку команду, що починається префіксним символом, ця команда негайно виконається. Префіксний символ повинен бути не алфавітно-цифровим.
SQLP[ROMPT <Текст> Визначає запрошення командного рядка SQL * Plus (за замовчуванням – "SQL> “).
SQLT[ERMINATOR <Символ> / ON / OFF  Задає символ, що завершує і посилає на виконання команду SQL. За замовчуванням використовується крапка з комою. Якщо задати значення OFF, То для завершення доведеться вводити порожній рядок або BLOCKTERMINATOR, Якщо встановлена системна змінна SQLBLANKLINES.
SUF[FIX <Текст> Задає стандартне розширення командного файлу. За замовчуванням використовується sql.
TAB  ON / OFF  Управляє використанням символу табуляції для форматування результатів запитів в SQL * Plus.
TERM[OUT ON / OFF  Управляє видачею результатів команд на екран. Якщо задати значення OFF, Результат виконання команд (крім інтерактивних) не буде видаватися на екран, але буде записуватися у файл, вказаний в команді SPOOL.
TI[ME ON / OFF  Управляє видачею поточного часу. При встановленні значення ON у запрошенні видається поточний час.
TIMI[NG ON / OFF  Управляє видачею статистики про час. При встановленні значення ON після виконання команди або командного файлу видається час виконання з точністю до сотих часток секунди.
TRIM[OUT ON / OFF  Управляє усіканням хвостових прогалин в видавали рядках. При встановленні значення ON (Прийнято за замовчуванням), хвостові прогалини скорочуються. Ця змінна враховується тільки при виводі на екран.
TRIMS[POOL ON / OFF  Управляє усіканням хвостових прогалин у рядках, що скидаються у файл або на принтер, аналогічно TRIMOUT.
UND[ERLINE ON / OFF / <Символ> Задає символ, використовуваний для підкреслення заголовків стовпців. За замовчуванням використовується символ дефісу. Значення OFF відключає підкреслення заголовків.
VER[IFY ON / OFF  Управляє видачею тексту SQL-операторів і PL / SQL-блоків до і після заміни підставляється змінних значеннями.
WRA[P ON / OFF  Управляє усіканням занадто довгих рядків результатів. За замовчуванням, залишки рядків переносяться на наступний рядок. При завданні значення OFF – Скорочуються.

Розглянемо приклад завдання деяких системних змінних SQL * Plus:

SQL> set time on
16:43:39 SQL> set timing on
16:43:43 SQL> set underline off
16:43:55 SQL> set pagesize 1000
16:44:02 SQL> set linesize 128
16:44:12 SQL> select * from dept
16:44:18 2 ;

DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 TRAINING KIEV

Затрач.время: 00:00:00.80
16:44:20 SQL>

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*