Difference between revisions of "Oracle:Control Commands"
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | [[Main Page]] >> [[Oracle|Oracle and SQL]] >> [[Oracle_Workbook|Workbook]] >> [[Oracle:Misc|Miscellaneous features]] >> Control commands | |
Control commands can be used to: | Control commands can be used to: | ||
Line 55: | Line 55: | ||
<code> | <code> | ||
COLUMN column_name CLEAR | COLUMN column_name CLEAR | ||
− | </ | + | </code> |
or to clear all column headings: | or to clear all column headings: | ||
Line 61: | Line 61: | ||
<code> | <code> | ||
CLEAR COLUMNS | CLEAR COLUMNS | ||
− | </ | + | </code> |
To see what column definitions are in action type: | To see what column definitions are in action type: | ||
Line 80: | Line 80: | ||
COLUMN DEPTNO CLEAR | COLUMN DEPTNO CLEAR | ||
TTITLE OFF | TTITLE OFF | ||
− | + | ||
BTITLE can be used to display a title at the end of the report. It displays the title centred on a single line with no date or page number added. | BTITLE can be used to display a title at the end of the report. It displays the title centred on a single line with no date or page number added. | ||
Line 89: | Line 89: | ||
SELECT empno, ename FROM EMP; | SELECT empno, ename FROM EMP; | ||
CLEAR COLUMNS | CLEAR COLUMNS | ||
+ | |||
=== Changing Column Width === | === Changing Column Width === | ||
Line 96: | Line 97: | ||
<code> | <code> | ||
COLUMN column_name FORMAT model | COLUMN column_name FORMAT model | ||
− | </ | + | </code> |
The column_name can also be a column alias for an expression. | The column_name can also be a column alias for an expression. | ||
Line 105: | Line 106: | ||
COLUMN ename HEADING "Employee Name" | COLUMN ename HEADING "Employee Name" | ||
COLUMN sal FORMAT $9,999 | COLUMN sal FORMAT $9,999 | ||
− | SELECT empno, ename, sal FROM EMP; | + | COLUMN comm FORMAT $9999.99 |
+ | COLUMN annual_sal FORMAT $99,999 | ||
+ | COLUMN empno FORMAT 9999 | ||
+ | SELECT empno, ename, sal, comm, sal*12 AS annual_sal FROM EMP; | ||
CLEAR COLUMNS | CLEAR COLUMNS | ||
Line 112: | Line 116: | ||
When working with numerical data, or calculated fields, for example, the SUM or COUNT of a particular field, the format model needs to reflect numerical data. A format model is a representation of the way you want the numbers in the column to appear, using 9's to represent the digits. | When working with numerical data, or calculated fields, for example, the SUM or COUNT of a particular field, the format model needs to reflect numerical data. A format model is a representation of the way you want the numbers in the column to appear, using 9's to represent the digits. | ||
+ | |||
The format for numerical data is similar to before: | The format for numerical data is similar to before: | ||
+ | |||
+ | <code> | ||
COLUMN column_name FORMAT model | COLUMN column_name FORMAT model | ||
+ | </code> | ||
+ | |||
The format model can be a combination of the following: | The format model can be a combination of the following: | ||
− | Element Example(s) Description | + | |
− | 9 9999 Determines the display width by the number of digits entered. Does not display leading zeros. | + | {| class = "wikitable" |
− | Note, if you give fewer digits than the size of the number, only ####'s will be displayed! | + | !Element!!Example(s)!!Description |
− | 0 0999 | + | |- |
− | 9990 Displays | + | |9||9999||Determines the display width by the number of digits entered. Does not display leading zeros. <br/>Note, if you give fewer digits than the size of the number, only ####'s will be displayed! |
− | + | |- | |
− | $ $9999 Prefixes a dollar sign to a value. | + | |0||0999||Displays leading zeroes. |
− | (No £ signs!) | + | |- |
− | B B9999 Display a zero value as a blank | + | | ||9990||Displays trailing zeroes. |
− | MI 9999MI Displays "-" after a negative value | + | |- |
− | PR 999PR Displays a negative value in angle brackets | + | |$||$9999||Prefixes a dollar sign to a value.(No £ signs!) |
− | Comma 9,999 Displays a comma in the position indicated | + | |- |
− | Period 99.99 Aligns the decimal point in the position indicated | + | |B||B9999||Display a zero value as a blank |
− | V 999V99 Multiples the value by 10n, where n is the number of "9's" after the "V" | + | |- |
− | EEEE 9.999EEEE Displays in scientific notation (format must contain exactly four "E's" | + | |MI||9999MI||Displays "-" after a negative value |
− | + | |- | |
− | + | |PR||999PR||Displays a negative value in angle brackets | |
+ | |- | ||
+ | |Comma||9,999||Displays a comma in the position indicated | ||
+ | |- | ||
+ | |Period||99.99||Aligns the decimal point in the position indicated | ||
+ | |- | ||
+ | |V||999V99||Multiples the value by 10n, where n is the number of "9's" after the "V" | ||
+ | |- | ||
+ | |EEEE||9.999EEEE||Displays in scientific notation (format must contain exactly four "E's" | ||
+ | |} | ||
+ | |||
You will find these formats useful for expressions involving COUNTs or SUMs. | You will find these formats useful for expressions involving COUNTs or SUMs. | ||
− | + | ||
− | + | ||
− | + | == Organising rows into groups: the BREAK command == | |
− | + | ||
The BREAK command can organise the rows of a report into groups and specify an action that a query is to take between groups. | The BREAK command can organise the rows of a report into groups and specify an action that a query is to take between groups. | ||
+ | |||
To print a personnel report on the entire company with breaks where the value of DEPTNO changes and to skip a line in the report at each break: | To print a personnel report on the entire company with breaks where the value of DEPTNO changes and to skip a line in the report at each break: | ||
− | BREAK ON DEPTNO SKIP1; | + | |
− | TTITLE 'ACME WIDGET PERSONNEL REPORT' | + | BREAK ON DEPTNO SKIP1; |
− | BTITLE 'COMPANY CONFIDENTIAL' | + | TTITLE 'ACME WIDGET PERSONNEL REPORT' |
− | SELECT DEPTNO, ENAME, SAL | + | BTITLE 'COMPANY CONFIDENTIAL' |
− | FROM EMP | + | SELECT DEPTNO, ENAME, SAL |
− | ORDER BY DEPTNO; | + | FROM EMP |
+ | ORDER BY DEPTNO; | ||
+ | |||
A BREAK definition can be cleared by | A BREAK definition can be cleared by | ||
− | CLEAR BREAK | + | |
+ | CLEAR BREAK | ||
+ | |||
Note that to make sensible use of the BREAK command the rows must be in a specific order. The order in which rows are displayed can be controlled by the ORDER BY command (see section 16). | Note that to make sensible use of the BREAK command the rows must be in a specific order. The order in which rows are displayed can be controlled by the ORDER BY command (see section 16). | ||
− | + | ||
− | Generic Format Examples | + | |
− | BREAK ON column name BREAK ON DEPTNO | + | == Some useful BREAK formats == |
− | BREAK ON column name ON column name ON column name BREAK ON MGR ON DEPTNO | + | |
− | BREAK ON ROW | + | |
− | BREAK ON PAGE | + | {| class = "wikitable" |
− | BREAK ON REPORT | + | !Generic Format!!Examples |
− | + | |- | |
− | BREAK ON ....... SKIP (n) Skips N number of lines | + | |BREAK ON column name||BREAK ON DEPTNO |
− | BREAK ON | + | |- |
− | + | |BREAK ON column name ON column name ON column name||BREAK ON MGR ON DEPTNO | |
+ | |- | ||
+ | |BREAK ON ROW||Breaks whenever a row is selected | ||
+ | |- | ||
+ | |BREAK ON PAGE||Breaks between pages of a report | ||
+ | |- | ||
+ | |BREAK ON REPORT||Breaks at the end of the report | ||
+ | |} | ||
+ | |||
+ | |||
+ | == Some useful actions at BREAK == | ||
+ | |||
+ | <code> | ||
+ | BREAK ON ....... SKIP (n) Skips N number of lines | ||
+ | |||
+ | BREAK ON ....... PAGE Begins a new page | ||
+ | </code> | ||
+ | |||
+ | |||
+ | == Computing subtotals at breaks == | ||
+ | |||
If you organise the rows of a report into groups with the BREAK command, you can make a query perform various computations on the rows in each group. The format of the COMPUTE command is: | If you organise the rows of a report into groups with the BREAK command, you can make a query perform various computations on the rows in each group. The format of the COMPUTE command is: | ||
+ | |||
+ | <code> | ||
COMPUTE function_name OF column_name, column_name ON break_column name | COMPUTE function_name OF column_name, column_name ON break_column name | ||
+ | </code> | ||
+ | |||
where the function name can be SUM, MIN, MAX, AVG, STD VAR, or COUNT. | where the function name can be SUM, MIN, MAX, AVG, STD VAR, or COUNT. | ||
− | + | ||
− | BREAK ON DEPTNO | + | For example, |
− | COMPUTE SUM OF SAL ON DEPTNO | + | |
− | SELECT DEPTNO, EMPNO, ENAME, SAL | + | BREAK ON DEPTNO SKIP 2 |
− | FROM EMP | + | COMPUTE SUM OF SAL ON DEPTNO |
− | ORDER BY DEPTNO; | + | SELECT DEPTNO, EMPNO, ENAME, SAL |
− | CLEAR BREAK | + | FROM EMP |
− | + | ORDER BY DEPTNO; | |
+ | CLEAR BREAK | ||
+ | CLEAR COMPUTE | ||
+ | |||
+ | |||
+ | == Page size commands == | ||
+ | |||
The following commands alter the page size and width, which are useful for printed reports. The default values are shown first. | The following commands alter the page size and width, which are useful for printed reports. The default values are shown first. | ||
− | Function Action | + | |
− | SET PAGESIZE {14|n} sets the number of lines from the top title to the end of the page. With 11 inch long paper, a value of 54 (plus a NEWPAGE value of 6) leaves one-inch margins above and below a report. | + | {| class = "wikitable" |
− | Set PAGESIZE to 0 to suppress headings, page breaks, titles, the initial blank line, and other formatting information | + | !Function!!Action |
− | SET NEWPAGE {1|n} sets the number of blank lines printed between the beginning of each page and the top title. A value of 0 sends a formfeed between pages and clears the screen on most terminals. | + | |- |
− | SET LINESIZE {80|n} sets the total number of characters displayed on a line before starting a new line and controls the position of centred and right-aligned text in TTITLE and BTITLE. The range is 1 to a system-dependent maximum. | + | |SET PAGESIZE {14<nowiki>|</nowiki>n}||sets the number of lines from the top title to the end of the page. With 11 inch long paper, a value of 54 (plus a NEWPAGE value of 6) leaves one-inch margins above and below a report. |
+ | |- | ||
+ | |Set PAGESIZE to 0 to suppress headings, page breaks, titles, the initial blank line, and other formatting information | ||
+ | |- | ||
+ | |SET NEWPAGE {1<nowiki>|</nowiki>n}||sets the number of blank lines printed between the beginning of each page and the top title. A value of 0 sends a formfeed between pages and clears the screen on most terminals. | ||
+ | |- | ||
+ | |SET LINESIZE {80<nowiki>|</nowiki>n}||sets the total number of characters displayed on a line before starting a new line and controls the position of centred and right-aligned text in TTITLE and BTITLE. The range is 1 to a system-dependent maximum. | ||
+ | |} | ||
+ | |||
For example, | For example, | ||
− | + | ||
− | + | SET PAGESIZE 65 | |
− | + | SET NEWPAGE 1 | |
+ | SET LINESIZE 100 | ||
+ | |||
Will print 65 lines per page, 100 characters wide and will throw one new line at the top of a new page. For reports that will be viewed on the screen only, set the pagesize to about 40. | Will print 65 lines per page, 100 characters wide and will throw one new line at the top of a new page. For reports that will be viewed on the screen only, set the pagesize to about 40. | ||
− | + | ||
+ | |||
+ | == Exercise 6.1 == | ||
+ | |||
+ | 6.1 Create a file which produces a report on Salesmen earning more than 300 commission. | ||
+ | |||
+ | The report should have the following features: | ||
+ | * it should be headed 'Computing Sales Report'; | ||
+ | * each page should have 'For Your Eyes Only' at the bottom of the report; | ||
+ | * show both the sal and comm columns as currency; | ||
+ | * show the comm as a 4 figure number with leading 0s; | ||
+ | * the output should be ordered by salary; | ||
+ | * The SQL query file should be stored as U:\salesman.sql; | ||
+ | * save the output of the query into a file U:\salary.txt. | ||
+ | |||
+ | == Next Step == | ||
+ | [[Oracle:Substitution Variables|Substitution Variables]] |
Latest revision as of 14:46, 6 April 2016
Main Page >> Oracle and SQL >> Workbook >> Miscellaneous features >> Control commands
Control commands can be used to:
- Format reports
- Edit SQL commands
- Store and retrieve queries
- Get help
Some of these have been introduced in previous sections.
Formatting Reports
When saving the query results, you may wish to format them to make them more meaningful. For example:
- Change column headings
- Format number, character and date columns
- Copying, listing and resetting column display attributes
- Suppress duplicate values and inserting spaces in the output for clarity
- Setting page dimensions
- Placing titles at the top and bottom of reports (headers and footers)
- Display column values, or the current date, or page numbers in the titles
- Calculating and printing summary lines (totals, averages, minimums, etc.)
- Listing and removing spacing and summary line definitions
- Displaying column values and the current date or page number in your titles
Some of these commands have been introduced already, but the following sections will introduce some new formatting commands.
Some basic report formatting commands
The format of the output can be changed via various control commands.
Note, formatting commands do not need to be terminated by a semi-colon. The formatting commands are not part of the SQL standard and are an extra feature provided by the database vendor. Each database management system (DBMS) has its own set of formatting features, for example, the way Oracle formats a report will be different from FoxPro or Access. The extra features provided by Oracle are called SQL*Plus.
Column headings can be given more user-friendly names with the COLUMN command. This can be used to change the name of the column or reformat the column data in a query.
Changing Column Headings
SQL*Plus uses column or expression names (e.g., EMPNO, or COUNT(*)) as the default column name when outputting results. Column names can be short and cryptic and expressions can be hard to understand.
To define a more useful column heading, you need to use the HEADING clause of the FORMAT command.
The format is:
COLUMN column_name HEADING new_column_name
Note:
- If the column to be renamed is an expression, e.g., SUM(sal), then the column_name is substituted by the expression.
- If spaces are needed in the new name, enclose the name in either single or double quotes, e.g., "Student Name".
- The new heading is case sensitive, that is if you type it in lower/mixed case, it will appear exactly as typed, e.g., Student_Code.
To cancel an individual formatting command:
COLUMN column_name CLEAR
or to clear all column headings:
CLEAR COLUMNS
To see what column definitions are in action type:
columns
For example, to list information about employees who work for Blake:
COLUMN DEPTNO HEADING DEPARTMENT TTITLE 'WILLIAM BLAKE || LIST OF EMPLOYEES' SELECT ENAME, JOB, MGR, SAL, COMM, DEPTNO FROM EMP WHERE MGR = 7698;
Notice the difference from normal. In a report the formatting commands should also be cancelled afterwards, otherwise they will remain active until you exit Oracle.
To cancel the formatting commands:
COLUMN DEPTNO CLEAR TTITLE OFF
BTITLE can be used to display a title at the end of the report. It displays the title centred on a single line with no date or page number added.
To display the column heading over more than one line, use a vertical bar (|) where you want to begin a new line, for example:
COLUMN empno HEADING "Employee|Number" COLUMN ename HEADING "Employee|Name" SELECT empno, ename FROM EMP; CLEAR COLUMNS
Changing Column Width
The displayed width of a VARCHAR2, LONG or DATE field can be changed in a report by using the COLUMN command with a format model consisting of the letter A (for alphanumeric) followed by a number representing the width of the column. The structure for the FORMAT clause is:
COLUMN column_name FORMAT model
The column_name can also be a column alias for an expression.
Examples:
COLUMN ename FORMAT A15 COLUMN ename HEADING "Employee Name" COLUMN sal FORMAT $9,999 COLUMN comm FORMAT $9999.99 COLUMN annual_sal FORMAT $99,999 COLUMN empno FORMAT 9999 SELECT empno, ename, sal, comm, sal*12 AS annual_sal FROM EMP; CLEAR COLUMNS
Formatting Number Columns
When working with numerical data, or calculated fields, for example, the SUM or COUNT of a particular field, the format model needs to reflect numerical data. A format model is a representation of the way you want the numbers in the column to appear, using 9's to represent the digits.
The format for numerical data is similar to before:
COLUMN column_name FORMAT model
The format model can be a combination of the following:
Element | Example(s) | Description |
---|---|---|
9 | 9999 | Determines the display width by the number of digits entered. Does not display leading zeros. Note, if you give fewer digits than the size of the number, only ####'s will be displayed! |
0 | 0999 | Displays leading zeroes. |
9990 | Displays trailing zeroes. | |
$ | $9999 | Prefixes a dollar sign to a value.(No £ signs!) |
B | B9999 | Display a zero value as a blank |
MI | 9999MI | Displays "-" after a negative value |
PR | 999PR | Displays a negative value in angle brackets |
Comma | 9,999 | Displays a comma in the position indicated |
Period | 99.99 | Aligns the decimal point in the position indicated |
V | 999V99 | Multiples the value by 10n, where n is the number of "9's" after the "V" |
EEEE | 9.999EEEE | Displays in scientific notation (format must contain exactly four "E's" |
You will find these formats useful for expressions involving COUNTs or SUMs.
Organising rows into groups: the BREAK command
The BREAK command can organise the rows of a report into groups and specify an action that a query is to take between groups.
To print a personnel report on the entire company with breaks where the value of DEPTNO changes and to skip a line in the report at each break:
BREAK ON DEPTNO SKIP1; TTITLE 'ACME WIDGET PERSONNEL REPORT' BTITLE 'COMPANY CONFIDENTIAL' SELECT DEPTNO, ENAME, SAL FROM EMP ORDER BY DEPTNO;
A BREAK definition can be cleared by
CLEAR BREAK
Note that to make sensible use of the BREAK command the rows must be in a specific order. The order in which rows are displayed can be controlled by the ORDER BY command (see section 16).
Some useful BREAK formats
Generic Format | Examples |
---|---|
BREAK ON column name | BREAK ON DEPTNO |
BREAK ON column name ON column name ON column name | BREAK ON MGR ON DEPTNO |
BREAK ON ROW | Breaks whenever a row is selected |
BREAK ON PAGE | Breaks between pages of a report |
BREAK ON REPORT | Breaks at the end of the report |
Some useful actions at BREAK
BREAK ON ....... SKIP (n) Skips N number of lines
BREAK ON ....... PAGE Begins a new page
Computing subtotals at breaks
If you organise the rows of a report into groups with the BREAK command, you can make a query perform various computations on the rows in each group. The format of the COMPUTE command is:
COMPUTE function_name OF column_name, column_name ON break_column name
where the function name can be SUM, MIN, MAX, AVG, STD VAR, or COUNT.
For example,
BREAK ON DEPTNO SKIP 2 COMPUTE SUM OF SAL ON DEPTNO SELECT DEPTNO, EMPNO, ENAME, SAL FROM EMP ORDER BY DEPTNO; CLEAR BREAK CLEAR COMPUTE
Page size commands
The following commands alter the page size and width, which are useful for printed reports. The default values are shown first.
Function | Action |
---|---|
SET PAGESIZE {14|n} | sets the number of lines from the top title to the end of the page. With 11 inch long paper, a value of 54 (plus a NEWPAGE value of 6) leaves one-inch margins above and below a report. |
Set PAGESIZE to 0 to suppress headings, page breaks, titles, the initial blank line, and other formatting information | |
SET NEWPAGE {1|n} | sets the number of blank lines printed between the beginning of each page and the top title. A value of 0 sends a formfeed between pages and clears the screen on most terminals. |
SET LINESIZE {80|n} | sets the total number of characters displayed on a line before starting a new line and controls the position of centred and right-aligned text in TTITLE and BTITLE. The range is 1 to a system-dependent maximum. |
For example,
SET PAGESIZE 65 SET NEWPAGE 1 SET LINESIZE 100
Will print 65 lines per page, 100 characters wide and will throw one new line at the top of a new page. For reports that will be viewed on the screen only, set the pagesize to about 40.
Exercise 6.1
6.1 Create a file which produces a report on Salesmen earning more than 300 commission.
The report should have the following features:
- it should be headed 'Computing Sales Report';
- each page should have 'For Your Eyes Only' at the bottom of the report;
- show both the sal and comm columns as currency;
- show the comm as a 4 figure number with leading 0s;
- the output should be ordered by salary;
- The SQL query file should be stored as U:\salesman.sql;
- save the output of the query into a file U:\salary.txt.