2017-01-12 4 views
1

Я изучаю, как писать базовые отчеты SQL * Plus.Базовый отчет SQL * Plus: команда прерывания не работает по назначению

Во время практики я столкнулся с проблемой команды BREAK ON и не уверен, как действовать дальше.

Для справки, используемая таблица называется «Газета» и содержит название функции в газете, в какой части этой функции есть функция, и на какой странице эта функция включена.

При выполнении следующего отчета, SQL * Plus возвращает результаты, как ожидается:

rem Newspaper Report 

ttitle 'Newspaper Features by Section' 
btitle 'Hot off the Presses' 

column feature format a15 word_wrapped 
column section format a7 
column page format 99 
column feature heading 'Feature' 
column section heading 'Section' 
column page heading 'Page' 

break on section skip 1 

set linesize 80 
set pagesize 40 
set newpage 0 
set feedback off 

spool test.sql 

select section, feature, page from newspaper 
order by section; 

spool off 

Выход:

Section Feature   Page 
------- --------------- ---- 
A  National News  1 
     Editorials  12 

B  Bridge    2 
     Movies    4 
     Modern Life  1 
     Television   7 

C  Comics    4 
     Weather   2 

D  Sports    1 

E  Business   1 

F  Obituaries   6 
     Classified   8 
     Doctor Is In  6 
     Births    7 

В этом примере, SQL * Plus позволяет перейти на одну строку, когда она достигает Новая функция. Вот как он должен работать.

Однако, когда я исполняю следующий отчет, мои результаты не отформатирован так, как они должны быть:

rem Newspaper Report 

ttitle 'Newspaper Features by Page' 
btitle 'Hot off the Presses' 

column feature format a15 word_wrapped 
column section format a7 
column page format 99 
column feature heading 'Feature' 
column section heading 'Section' 
column page heading 'Page' 

break on page skip 1 

set linesize 80 
set pagesize 40 
set newpage 0 
set feedback off 

spool test.sql 

select page, feature, section from newspaper 
order by page; 

spool off 

Выход:

Page Feature   Section 
---- --------------- ------- 
    1 Modern Life  B 
    Sports   D 
    National News A 
    Business  E 
    2 Weather   C 
    Bridge   B 
    4 Movies   B 
    Comics   C 
    6 Doctor Is In F 
    Obituaries  F 
    7 Television  B 
    Births   F 
    8 Classified  F 
    12 Editorials  A 

Нет линий были пропущены, когда страница изменена , Я что-то делаю неправильно или это команда ограничена таким образом?

ответ

2

Мне кажется, что проблема заключается в том, что имя столбца является «Страница»; так как страница является BREAK ACTION. Можете ли вы попытаться наложить столбцы на что-то другое, кроме «страницы», и попробуйте следующее:

column page_temp heading 'Page' 

break on page_temp skip 1 

set linesize 80 
set pagesize 40 
set newpage 0 
set feedback off 

spool test.sql 

select page page_temp, feature, section from newspaper 
order by page; 
+0

Это сделало трюк! –