Команды для форматирования вывода и генерации отчетов

Используя обычные команды SQL*Plus вместе с некоторыми командами форматирования, можно придавать выводу запросов определенную структуру и создавать элементарные отчеты. Хотя в компании может быть установлено хитроумное ПО, позволяющее не пользоваться поддерживаемыми SQL*Plus возможностями для форматирования и генерации отчетов в большинстве случаев, вероятность того, что иногда все-таки будет возникать необходимость в применении этих возможностей для придания выводу привлекательной или хотя разборчивой формы, не исключена. Возможности для форматирования несколько примитивны, но в большинстве случаев справляются с поставленной задачей, поскольку отчеты в основном требуется создавать для удовлетворения потребностей, связанных с управлением базами данных.

Команда BREAK

Команда BREAK позволяет указывать, где должно происходить изменение в форматировании, и как это изменение должно выглядеть. Она может применяться в отношении столбца, строки, действия или целого отчета, например, для пропуска строки при каждом изменении значения указанного столбца или для вывода в конце отчета определенных подсчитанных значений.

Ниже приведен пример использования команды BREAK

BREAK ON DEPT_ID SKIP PAGE ON JOB_ID SKIP 1 ON SALARY SKIP 1

В этом примере в команде BREAK с помощью отдельных конструкций ON задается разбивка по трем следующим столбцам — DEPT_ID, JOB_ID и SALARY. Теперь при каждом обнаружении значения в любом из этих трех столбцов разбивки SQL*Plus будет выполнять соответствующее указанное для него действие. Все действия выполняются SQL*Plus в направлении от самой последней разбивки (каковая в данном примере находится на столбце SALARY) до самой первой (каковая в данном примере находится на столбце DEPT_ID).

Если в команде BREAK присутствует конструкция ON, команда обязательно должна сопровождаться конструкцией ORDER BY в SQL-операторе, следующем за командами форматирования. Ниже показано с помощью BREAK (из предыдущего примера) и SQL-оператора сгенерировать понятный вывод:

SQL> BREAK ON DEPT_ID SKIP PAGE ON JOB_ID SKIP 1 ON SALARY SKIP 1
SQL> SELECT dept_id, job_id, salary, emp_name
FROM employees
WHERE salary > 50000
ORDER BY dept_id, job_id, salary, emp_name; 

Применение этой команды BREAK приведет к получению вывода в следующем формате.

  • Все строки с идентичными значениями в столбце DEPT_ID будут распечатываться на одной странице, а все строки с идентичными значениями в JOB_ID — группами.
  • В каждой группе задания с идентичными значениями в столбце SALARY будут распечатываться в виде отдельных групп.
  • Изменения в столбце emp_name не будут играть никакой роли, потому что для этого столбца разбивки не предусмотрено.

Команда COLUMN

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

Существует целый ряд параметров, которые можно использовать с командой COLUMN;ниже приведен простой пример:

SQL> COLUMN dept FORMAT a15 HEADING 'Department'
SQL> COLUMN cost FORMAT $9999 

Здесь первая команда COLUMN указывает, что значения столбца DEPT должны занимать не более 15 символов в длину. Более длинные значения будут усекаться. Кроме того, она специфицирует, что названия всех отделов должны отображаться под одним понятным заголовком Department. Вторая команда COLUMN указывает, что значения столбца COST должны отображаться вместе со знаком доллара ($) впереди.

Команда COMPUTE

Команда COMPUTE, как не трудно догадаться по ее названию, применяется для выполнения нескольких видов вычислений, в том числе средних значений, значений стандартного отклонения и т.п. Ниже приведен пример использования этой команды.Команда SELECT выбирает данные, над которыми нужно работать команде COMPUTE:

SQL> COMPUTE AVG OF sales ON district
SQL> SELECT region, district, sales
FROM total_sales
WHERE district = 'NORTH';
SQL> 

Команда REPFOOTER

Команда REPFOOTER распечатывает указанный текст нижнего колонтитула отчета.

Ниже приведен пример ее применения:

SQL> REPFOOTER PAGE RIGHT 'END OF THE 1st QUARTER RESULTS REPORT' 

Команда REPHEADER

Команда REPHEADER похожа на команду REPFOOTER, но вместо нижнего добавляет к отчету верхний колонтитул с заданным форматированием. Ниже приведен пример использования этой команды для распечатки верхнего колонтитула по центру верхней части первой страницы отчета:

SQL> REPHEADER PAGE CENTER '1st QUARTER RESULTS REPORT FOR 2008' 

Команды BTITLE и TTITLE

Команда TTITLE размещает заголовок в верхней части каждой страницы отчета, а команда BTITLE делает то же самое, но в нижней части каждой страницы. Ниже приведены примеры:

SQL> TTITLE 'Annual Financial Report for the Women's Club, 2008'
SQL> BTITLE '2005 Report' 

Внимание! После применения команд BTITLE и TTITLE, как и для многих других команд SQL*Plus, их потребуется обязательно вручную отключить во избежание наследования их параметров всеми последующими SQL-командами в текущем сеансе. Например, если не отключить добавление заголовка после создания отчета, этот же самый заголовок будет добавляться в вывод всех последующих команд.


 

Вас заинтересует / Intresting for you:

Именование переменных в SQL*Pl...
Именование переменных в SQL*Pl... 7093 просмотров Александров Попков Tue, 21 Nov 2017, 13:32:50
Ключевые команды администриров...
Ключевые команды администриров... 1641 просмотров Дэн Tue, 21 Nov 2017, 13:18:46
Копирование таблиц с помощью к...
Копирование таблиц с помощью к... 6126 просмотров Antoniy Tue, 21 Nov 2017, 13:18:46
Команды управления томами ASMC...
Команды управления томами ASMC... 375 просмотров Денис Sun, 24 Jan 2021, 17:26:46
Войдите чтобы комментировать