Утиліта 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

Як бачите, якщо в команді зустрічається не певна явно раніше підставляється змінна, 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>

*

*