Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / L89 / Формирование отчетов в SQL-PLUS.doc
Скачиваний:
49
Добавлен:
16.04.2013
Размер:
205.82 Кб
Скачать

Формирование отчётов с использованием Oracle SQL*Plus

Схема обработки SQL-оператора при использовании команд форматирования.

SQL*PLUS

laptop

Буфер 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, но по умолчанию ничего не выводит.

Соседние файлы в папке L89