SQL Plus: Создание и выполнение сценариев - Команда COLUMN

ОГЛАВЛЕНИЕ

Команда COLUMN

Команда COLUMN для управления форматом выдачи столбца имеет следующий синтаксис:

<команда COLUMN> ::=
COL[UMN] [<ссылка на столбец> {<опция> }]
<ссылка на столбец> ::=
<имя столбца> / <псевдоним> / <выражение>
<опция> ::=
ALI[AS] <псевдоним>
  / CLE[AR]
  / ENTMAP [<вкл./откл.>]
  / FOLD_A[FTER]
  / FOLD_B[EFORE]
  / FOR[MAT] <формат>
  / HEA[DING] <текст>
  / JUS[TIFY] <выравнивание>
  / LIKE <выражение> / <псевдоним>
  / NEWL[INE]
  / NEW_V[ALUE] <переменная>
  / NOPRI[NT]
  / PRI[NT]
  / NUL[L] <текст>
  / OLD_V[ALUE] <переменная>
  / <вкл./откл.>
  / WRA[PPED]
  / WOR[D_WRAPPED]
  / TRU[NCATED]
<вкл./откл.> ::=
ON / OFF
<выравнивание> ::=
L[EFT] / C[ENTER] / C[ENTRE] / R[IGHT]

Назначение опций форматирования столбца кратко описано в табл. 5.

Таблица 5. Основные опции команды COLUMN.

Опция  Назначение 
ALIAS  Присваивает столбцу указанный псевдоним. По этому псевдониму на столбец можно ссылаться в дальнейшем в командах BREAK, COMPUTE и COLUMN.
CLEAR  Сбрасывает атрибуты указанного столбца в стандартные значения.
ENTMAP  Позволяет включать и отключать форматирование значений столбца для HTML-отчета. Если эта опция для столбца включена, в значениях будут заменяться символы, имеющие управляющее значение в HTML (<, >, & и т.д.).
FOLD_AFTER  Вставляет перевод строки после заголовка столбца и каждого значения в данном столбце. Перевод строки не вставляется, если указанный столбец - последний в списке выбора.
FOLD_BEFORE  Вставляет перевод строки перед заголовком столбца и каждым значением в данном столбце. Перевод строки не вставляется, если указанный столбец - первый в списке выбора.
FORMAT  Задает формат вывода значений столбца. Основные элементы формата представлены в табл. 6 ниже.
HEADING  Задает заголовок столбца. Если эта опция не используется, в качестве заголовка используются начальные символы (до ширины столбца) имени столбца или выбираемого выражения. Если в тексте есть пробелы или символы пунктуации, его необходимо брать в одинарные или двойные кавычки. Вместо каждого вхождения символа HEADSEP (по умолчанию - "/") в тексте заголовка вставляется перевод строки.
JUSTIFY  Задает выравнивание столбца. По умолчанию столбцы типа NUMBER выравниваются вправо, все остальные - влево.
LIKE  Копирует особенности форматирования указанного столбца, не заданные для текущего столбца явно.
NEWLINE  Вставляет перевод строки перед выдачей значения столбца аналогично FOLD_BEFORE.
NEW_VALUE  Задает переменную, в которой будет храниться значение столбца. Эту переменную можно использовать в команде TTITLE в качестве элемента верхнего колонтитула. Сам столбец необходимо при этом указать в команде BREAK с действием SKIP PAGE.
NOPRINT
PRINT 
Управляет выдачей столбца. Опция NOPRINT отключает выдачу столбца на экран и в отчет. Опция PRINT восстанавливает выдачу столбца.
NULL  Задает текст, выдаваемый утилитой SQL*Plus вместо пустых значений в столбце. По умолчанию используется пробел.
OLD_VALUE  Задает переменную, в которой будет храниться значение столбца. Эту переменную можно использовать в команде BTITLE в качестве элемента нижнего колонтитула. Сам столбец необходимо при этом указать в команде BREAK с действием SKIP PAGE.
ON
OFF 
Управляет применением особенностей (атрибутов) форматирования столбца. Значение OFF отключает применение особенностей форматирования, не отменяя их. Значение ON снова включает применение заданных особенностей форматирования.
WRAPPED
WORD_WRAPPED
TRUNCATED 
Задает правила работы со значениями, превышающими ширину столбца. Допускается перенос на следующую строку по границе столбца, по границе слова или усечение по границе столбца.

Таблица 6. Основные элементы формата опции FORMAT.

Элемент  Пример  Описание 
A<ширина>  A20  Этот элемент формата позволяет изменить стандартную ширину столбца строкового типа и типа DATE. Если значение столбца не помещается в заданную <ширину>, оно усекается или переносится, в зависимости от соответствующих установок.
9  9999  Представляет значащую цифру в числовом значении. Вместо начальных нулей выдаются пробелы. Нулевое значение представляется цифрой 0.
0  0999  Выдает начальный нуль.
$  $999  Выдает перед числовым значением символ доллара.
L  9999L  Выдает символ локальной денежной единицы в данной позиции.
.  9999.99  Выдает разделитель целой и дробной части (десятичную запятую) в данной позиции
,  9,999  Выдает запятую (разделитель разрядов) в данной позиции.
DATE  DATE  Выдает числовое значение (представляющее дату в Юлианском формате) как дату в формате MM/DD/YY.
EEEE  9.999EEEE  Выдает значение в экспоненциальном формате (обязательно указывать ровно четыре E).

Рассмотрим простой пример использования команды COLUMN для форматирования значений и заголовков столбцов:

SQL> col sal format 9,999.99
SQL> select sal, ename from emp;

      SAL ENAME
--------- ----------
   800.00 SMITH
 1,600.00 ALLEN
 1,250.00 WARD
 2,975.00 JONES
 1,250.00 MARTIN
 2,850.00 BLAKE
 2,450.00 CLARK
 3,000.00 SCOTT
 5,000.00 KING
 1,500.00 TURNER
 1,100.00 ADAMS
   950.00 JAMES
 3,000.00 FORD
 1,300.00 MILLER

14 строк выбрано.

SQL> col sal clear
SQL> col ename heading "Зарплата/товарища"
SQL> a where deptno=30
  1* select sal, ename from empwhere deptno=30
SQL> /
select sal, ename from empwhere deptno=30
                                      *
ошибка в строке 1:
ORA-00933: неверное завершение SQL-предложения

SQL> c/where/ where/
  1* select sal, ename from emp where deptno=30
SQL> /

           Зарплата
       SAL товарища
---------- ----------
      1600 ALLEN
      1250 WARD
      1250 MARTIN
      2850 BLAKE
      1500 TURNER
       950 JAMES

6 строк выбрано.

Команда COLUMN с единственным параметром - ссылкой на столбец, выдает все атрибуты форматирования указанного столбца. Команда COLUMN без параметров выдает все атрибуты форматирования для всех столбцов, для которых они явно устанавливались. Продолжая предыдущий пример:

SQL> col ename COLUMN   ename ON HEADING  'Зарплата/товарища' headsep '/'