- •Приложение. Утилита sql*Plus. Создание и выполнение сценариев Назначение sql*Plus
- •Базовые понятия
- •Расширенные формулы Бэкуса-Наура
- •Запуск sql*Plus и выход из него
- •Опции командной строки
- •Регистрационная информация
- •Начальный сценарий
- •Использование профилей сайта и пользователя
- •Выход из sql*Plus
- •Подключение к стандартной и удаленной базе данных
- •Использование команды connect
- •Формат строки связи для удаленной базы данных
- •Основные команды
- •Выполнение команд Буфер sql
- •Выполнение операторов sql
- •Выполнение блоков pl/sql
- •Выполнение команд sql*Plus
- •Прекращение команды по ходу работы
- •Получение информации о времени выполнения команды
- •Выполнение команд базовой операционной системы
- •Получение оперативной справки
- •Команда help
- •Команда describe
- •Редактирование команд
- •Форматирование результатов запросов
- •Стандартный формат столбцов
- •Команда column
- •Команда break
- •Команда compute
- •Команда clear
- •Команды btitle и ttitle
- •Команды repheader и repfooter
- •Копирование данных из одной базы данных в другую
- •Команды для работы с файлами
- •Создание командных файлов
- •Команда save
- •Команда edit
- •Загрузка командных файлов
- •Выполнение командных файлов
- •Передача параметров командных файлов при вызове
- •Сокращенные формы команды start (@, @@)
- •Коды возврата командных файлов
- •Комментарии в командных файлах
- •Запоминание установок среды sql*Plus
- •Запись в файл и печать результатов выполнения запросов
- •Параметры командных файлов
- •Команды define и undfefine
- •Использование подставляемых переменных
- •Подстановка без повторного запроса
- •Подстановка параметров командных файлов
- •Ограничения
- •Системные переменные, влияющие на подстановку
- •Взаимодействие с пользователем
- •Команда prompt
- •Команда accept
- •Команда pause
- •Связываемые переменные
- •Команда variable
- •Команда print
- •Трассировка операторов
- •Настройка среды sql*Plus
- •Команда set
- •Команда show
- •Другие полезные команды
- •Команда execute
- •Команда password
- •Команды администрирования базы данных
- •Запуск базы данных
- •Остановка базы данных
- •Управление архивированием журналов повторного выполнения
- •Восстановление базы данных
- •Дополнительные источники информации
Команда compute
Команда COMPUTE позволяет вычислять и выдавать итоговые значения. При вызове без параметров выдает все заданные вычисления. Команда COMPUTE имеет следующий синтаксис:
<команда COMPUTE> ::=
COMP[UTE]{ <функция> [LAB[EL] <текст>]} OF <ссылка на столбец>{ <ссылка на столбец>} ON <ссылка на место>{ <ссылка на место>}
<ссылка на место> ::=
<ссылка на столбец> | REPORT | ROW
Функции, которые можно использовать при вычислении в команде COMPUTE, представлены в табл. 8.
Таблица 8. Функции в команде COMPUTE.
Функция |
Назначение |
Допустимые типы данных |
AVG |
Среднее среди непустых значений |
Числовые |
COU[NT] |
Количество непустых значений |
Все |
MIN[IMUM] |
Минимальное значение |
Числовые и строковые |
MAX[IMUM] |
Максимальное значение |
Числовые и строковые |
NUM[BER] |
Количество строк |
Все |
SUM |
Сумма непустых значений |
Числовые |
STD |
Среднеквадратичное отклонение непустых значений |
Числовые |
VAR[IANCE] |
Дисперсия непустых значений |
Числовые |
Назначение основных конструкций команды COMPUTE описано в табл. 9.
Таблица 9. Основные конструкции команды COMPUTE.
Конструкция |
Описание |
LABEL <текст> |
Задает метку вычисляемого значения. Если эта конструкция не указана, выдается полное имя функции (см. табл. 8). Максимальная длина текста - 500 символов. Если текст содержит пробелы и символы пунктуации, его надо брать в одиночные кавычки. Метка выравнивается влево и усекается до меньшего из значений ширины столбца или длины строки. Метка для вычисляемого значения выдается в столбце, по которому выполняется BREAK. Чтобы метка не выдавалась, необходимо задать опцию NOPRINT в команде COLUMN для этого столбца. Если вычисления выполняются по ON ROW или ON REPORT, вычисляемое значение выдается в первом столбце и метка не выдается. Чтобы метка была выдана, включите в список выбора первым фиктивный столбец. |
OF <ссылка на столбец> |
Задает столбцы или выражения, функция от которого вычисляется. В конструкции OF можно сослаться на выражение в списке выбора, взяв его в двойные кавычки. Имя или псевдоним столбца в кавычки брать не надо. |
ON <ссылка на место> |
Задает событие, которое утилита SQL*Plus будет считать местом для вычисления. При ссылке на столбец его имя нельзя уточнять, - при необходимости надо использовать псевдонимы. При достижении места вычисления (т.е. когда изменяется значение столбца или выражения, извлекается новая строка или достигается конец отчета) команда COMPUTE выдает вычисленное значение и начинает вычисление сначала. Если для одного и того же столбца задано несколько команд COMPUTE, применяется последняя из них. В конструкции ON можно сослаться на выражение в списке выбора, взяв его в двойные кавычки. Имя или псевдоним столбца в кавычки брать не надо. Если в качестве события задано ON ROW или ON REPORT, необходимо, чтобы в последней команде BREAK также использовался критерий разрыва ROW или REPORT. |
Для удаления всех определений COMPUTE используется команда CLEAR COMPUTES.
Рассмотрим простой пример вычисления итоговых значений и редактирования SQL-операторов в SQL*Plus:
SQL> set pagesize 55
SQL> break on deptno skip 1
SQL> compute avg label 'Средняя' of sal on deptno
SQL> select deptno, ename, sal
2 from emp
3 order by deptno;
DEPTNO ENAME SAL
---------- ---------- ----------
10 CLARK 2450
KING 5000
MILLER 1300
********** ----------
Средняя 2916,66667
20 SMITH 800
ADAMS 1100
FORD 3000
SCOTT 3000
JONES 2975
********** ----------
Средняя 2175
30 ALLEN 1600
BLAKE 2850
MARTIN 1250
JAMES 950
TURNER 1500
WARD 1250
********** ----------
Средняя 1566,66667
14 строк выбрано.
SQL> compute sum of sal on report
SQL> /
...
тот же результат, поскольку не изменили условие BREAK
SQL> break on deptno skip 1 on report
SQL> list 2
2* from emp
SQL> list *
2* from emp
SQL> i where deptno in (10, 20)
SQL> /
DEPTNO ENAME SAL
---------- ---------- ----------
10 CLARK 2450
KING 5000
MILLER 1300
********** ----------
Средняя 2916,66667
20 SMITH 800
ADAMS 1100
FORD 3000
SCOTT 3000
JONES 2975
********** ----------
Средняя 2175
----------
sum 19625
8 строк выбрано.