- •2 Order by deptno;
- •3 Order by deptno;
- •10 Clark 2450
- •20 Smith 800
- •8 Row selected
- •11/05/2003 Main report Page: 1
- •Функции pl/sql
- •Insert into purchase values (‘Prod_1’, 10, sysdate, ’sh’);
- •Insert into purchase values (‘Prod_1’ ,10, sysdate-7,’sh’);
- •Iniтсaр(product_name)
- •2 Last_name,
- •20,’Dallas’,
- •30,’Chicago’,
- •40,’Boston’,
- •6 Rows selected.
- •Настройка среды sql*Plus
- •Файлы сценариев sql (скрипты)
- •Разновидности комментариев
- •16 Row selected
- •2 From emp, salgrade
- •4 And sal between losal and hisal;
- •Intersect
- •Union union at all
- •2 Union
- •4 Union
- •6 Minus
- •8 Order by 2,1;
- •Контрольные вопросы
Формирование отчётов с использованием Oracle SQL*Plus
Схема обработки SQL-оператора при использовании команд форматирования.
SQL*PLUS
Буфер SQL
БД
ORACLE
Команды форматирования
Т.е. никакой информации о форматированиине передаётся в БД, а всё форматирование выполняется только после возвращения строк из БД.
Команда COLUMN.
Задаёт для заданных столбцов атрибуты вида, такие как:
Текст для заголовка столбца
Выравнивание заголовка
Формат числовых данных
Перенос данных в столбце
Синтаксис
COL[UMN] [имя_столбца|выражение [опции …] ]
допустимые опции:
ALI[AS] псевдоним
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] форматы-содержимого-столбца
HEA[DING] текст-заголовка-столбца
JUS[TYFY] L[EFT] | [C[ENTER] | C[ENTRE] | R[IGHT]
LIKE выражение|псевдоним
NEWL[INE]
NEW_V[ALUE] переменная
NOPRI[NT]|PRI[NT]
NUL[L] текст
OLD_V[ALUE] переменная
ON | OFF
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
Список наиболее важных форматов содержимого столбца
Элемент |
Пример |
Описание |
$ |
$9999 |
Помещает знак доллара перед значением |
, (запятая) |
9,999 |
Помещает запятую в указанной позиции |
. (точка) |
99.99 |
Помещает десятичную точку в указанной позиции |
MI |
9999MI |
Отображает знак минуса (-) после любого отрицательного числа |
S |
S9999 |
Помещает в указанной позиции знак плюса (+) для положительных чисел и знак минуса (-) для отрицательных |
PR |
9999PR |
Окружает отрицательные числа угловыми скобками |
D |
99D99 |
Отображает в указанной позиции десятичный разделитель, принятый в стране |
G |
9G999 |
Отображает в указанной позиции разделитель групп разрядов, принятый в стране |
C |
C999 |
Отображает в указанной позиции знак денежной единицы |
L |
L999 |
Отображает в указанной позиции знак местной денежной единицы |
RNилиrn |
RN |
Отображает числа римскими цифрами верхнего или нижнего регистра (только для целых чисел от 1 до 3999) |
0 (в начале) |
0999 |
Отображает один и более начальных нулей |
0 (в конце) |
9990 |
Отображает пустые значения в виде нулей |
Ann |
A08 |
Задаёт ширину столбца (в символах) |
Форматирование текста
COLUMN имя_столбца FORMAT Ann WORD_WRAP
где nn– ширина (в символах) столбца подлежащего переносу.
Форматирование заголовков столбцов
COLUMN имя_столбца HEADING ‘текст заголовка’ JUSTIFY LEFT
COLUMN имя_столбца HEADING ‘текст заголовка’ JUSTIFY CENTER
COLUMN имя_столбца HEADING ‘текст заголовка’ JUSTIFY RIGHT
Текст заголовка столбца может быть разделён на несколько строк специальными разделителями “|” (вертикальная черта).
SELECT * FROM product;
COLUMN product_name FORMAT A10 WORD_WRAP
HEADING ‘Name’ JUSTIFY CENTER
COLUMN product_price FORMAT $99.99 HEADING ‘Price’
JUSTIFY RIGHT
COLUMN quantity_on_hand FORMAT 99,999
HEADING ‘On|Hand’ JUSTIFY RIGHT
COLUMN last_stock_date HEADING ‘Last|Stock|Date’
JUSTIFY RIGHT
SELECT * FROM product;
COLUMN имя_столбца OFF – отключение форматирования столбца.
Команда SPOOL.
Включение и выключение буферизации (spooling) выходных данных на диске
SPOOL путь_и_имя_файла
SPOOL OFF
Команда BREAK.
Позволяет улучшить читаемость и применяется, как правило, при наличии в соответствующем SQL-операторе фразы “ORDERBY”.
Синтаксис:
BRE[AK] [ON элемент_отчёта [действие [действие]…] …
[NODUP[LICATES] | [DUP[LICATES] ]
где, элемент_отчёта: столбец | выражение | ROW | REPORT
он указывает на событие, которое и вызовет действие
действие:[SKI[P] n | [SKI[P]] PAGE] ]
По умолчанию, повторяющиеся элементы отчёта не выводятся.
Пример
SQL> BREAK ON deptno SKIP 1
SQL> SELECT deptno, ename, sal FROM emp
2 Order by deptno;
DEPTNO ENAME SAL
--------- ---------- --------
10 CLARK 2450
KING 5000
MILLER 1300
20 SMITH 800
ADAMS 1100
FORD 3000
SCOTT 3000
JONES 2975
30 ALLEN 1600
BLACK 2050
MARTIN 1250
JAMES 950
TURNER 1500
WARD 1250
14 row selected
Команда COMPUTE.
Применяется для создания промежуточных (и общих) итогов в сочетании с командой BREAK(а также фразой “ORDERBY”).
Синтиксис:
COMP[UTE] [функция [LAB[EL] текст] …
OF выражение|столбец|псевдоним …
ON выражение|столбец|псевдоним|REPORT|ROW …]
Предложение ONуказывает на событие вызывающее вычисление, а предложениеOF– на аргумент функции.
Список наиболее важных функций команды COMPUTE.
Функция |
Пояснение |
AVG |
Средняя величина значений отличных от NULL |
COUNT |
Число значений отличных от NULL |
MAX |
Максимальное значение |
MIN |
Минимальное значение |
NUMBER |
Число строк |
STD |
Среднеквадратичное отклонение |
VAR |
Дисперсия |
Пример
SQL> BREAK ON deptno SKIP 1 ON report SKIP 2
SQL> COMPUTE SUM OF sal ON deptno
SQL> COMPUTE SUM OF sal ON report
SQL> SELECT deptno, ename, sal FROM emp
2 WHERE deptno < 30
3 Order by deptno;
DEPTNO ENAME SAL
--------- ---------- --------
10 Clark 2450
KING 5000
MILLER 1300
********* --------
sum 8750
20 Smith 800
ADAMS 1100
FORD 3000
SCOTT 3000
JONES 2975
********* --------
sum 10875
--------
sum 19625
8 Row selected
Команда TTITLE.
Размещает и форматирует заголовок каждой страницы отчёта. Ввод команды без параметров выводит её текущее состояние.
Синтаксис:
TTI[TLE] [опция_печати [текст|переменная] …]|[OFF|ON]
где опция_печати:
COL n
S[KIP] [n]
TAB n
LE[FT]
CE[NTER]
R[IGHT]
BOLD
FORMAT формат
Примечание:текстможет быть разделён на несколько строк разделителями “|”. Если никаких опций, крометекстанет, то он выводится в средине заголовка, а по краям выводятся дата и номер страницы.
Пример
TTITLE le ‘&R_DT’ center ‘Main report’ r ‘Page:’-
format 999 SQL.NO skip center ‘(for Boss)’
Если в переменную &R_DTпредварительно была введена дата, то в результате получится заголовок:
11/05/2003 Main report Page: 1
(for Boss)
Ещё пример:
TTITLE ' Employee Detail | by Department '
Даёт в результате обработки умолчаний следующий заголовок:
Втн Окт 14 страница 1
Employee Detail
by Department
Команда BTITLE.
Размещает и форматирует подножие каждой страницы отчёта. Её синтаксис точно такой же, как у TTITLE, но по умолчанию ничего не выводит.