Date post: | 17-Jan-2016 |
Category: |
Documents |
Upload: | emily-waters |
View: | 216 times |
Download: | 0 times |
Copyright Oracle Corporation, 1998. All rights reserved.
88
Producing Readable Output with SQL*Plus
Producing Readable Output with SQL*Plus
8-2 Copyright Oracle Corporation, 1998. All rights reserved.
ObjectivesObjectives
After completing this lesson, you should After completing this lesson, you should be able to do the following:be able to do the following:
• Produce queries that require an input variable
• Customize the SQL*Plus environment
• Produce more readable output
• Create and execute script files
• Save customizations
After completing this lesson, you should After completing this lesson, you should be able to do the following:be able to do the following:
• Produce queries that require an input variable
• Customize the SQL*Plus environment
• Produce more readable output
• Create and execute script files
• Save customizations
8-3 Copyright Oracle Corporation, 1998. All rights reserved.
Interactive ReportsInteractive Reports
I want to input query values at runtime....sal = ? …
… deptno = ? … .. ename = ? ...
UserUser
8-4 Copyright Oracle Corporation, 1998. All rights reserved.
Substitution VariablesSubstitution Variables
• Use SQL*Plus substitution variables to temporarily store values.
– Single ampersand (&)
– Double ampersand (&&)
– DEFINE and ACCEPT commands
• Pass variable values between SQL statements.
• Dynamically alter headers and footers.
• Use SQL*Plus substitution variables to temporarily store values.
– Single ampersand (&)
– Double ampersand (&&)
– DEFINE and ACCEPT commands
• Pass variable values between SQL statements.
• Dynamically alter headers and footers.
8-5 Copyright Oracle Corporation, 1998. All rights reserved.
Using the & Substitution VariableUsing the & Substitution Variable
Use a variable prefixed with an ampersand Use a variable prefixed with an ampersand (&) to prompt the user for a value.(&) to prompt the user for a value.Use a variable prefixed with an ampersand Use a variable prefixed with an ampersand (&) to prompt the user for a value.(&) to prompt the user for a value.
SQL> SELECT empno, ename, sal, deptno 2 FROM emp 3 WHERE empno = &employee_num;
Enter value for employee_num: 73697369
EMPNO ENAME SAL DEPTNO--------- ---------- --------- --------- 7369 SMITH 800 20
8-6 Copyright Oracle Corporation, 1998. All rights reserved.
Using the SET VERIFY CommandUsing the SET VERIFY Command
Toggling the display of the text of a Toggling the display of the text of a command before and after SQL*Plus command before and after SQL*Plus replaces substitution variables with values.replaces substitution variables with values.
Toggling the display of the text of a Toggling the display of the text of a command before and after SQL*Plus command before and after SQL*Plus replaces substitution variables with values.replaces substitution variables with values.
SQL> SET VERIFY ONSQL> SELECT empno, ename, sal, deptno 2 FROM emp 3 WHERE empno = &employee_num;
Enter value for employee_num: 7369old 3: WHERE empno = &employee_numnew 3: WHERE empno = 7369
...
8-7 Copyright Oracle Corporation, 1998. All rights reserved.
Character and Date Values with Substitution VariablesCharacter and Date Values with Substitution Variables
Use single quotation marks for date and Use single quotation marks for date and character values.character values.Use single quotation marks for date and Use single quotation marks for date and character values.character values.
SQL> SELECT ename, deptno, sal*12 2 FROM emp 3 WHERE job='&job_title';
Enter value for job_title: ANALYSTANALYST
ENAME DEPTNO SAL*12---------- --------- ---------SCOTT 20 36000FORD 20 36000
8-8 Copyright Oracle Corporation, 1998. All rights reserved.
Specifying Column Names, Expressions, and Text at Runtime
Specifying Column Names, Expressions, and Text at Runtime
Use substitution variables to supplement Use substitution variables to supplement the following:the following:
• WHERE condition
• ORDER BY clause
• Column expression
• Table name
• Entire SELECT statement
Use substitution variables to supplement Use substitution variables to supplement the following:the following:
• WHERE condition
• ORDER BY clause
• Column expression
• Table name
• Entire SELECT statement
8-9 Copyright Oracle Corporation, 1998. All rights reserved.
Specifying Column Names, Expressions, and Text at Runtime
Specifying Column Names, Expressions, and Text at Runtime
SQL> SELECT empno, ename, job, &column_name 2 FROM emp 3 WHERE &condition 4 ORDER BY &order_column;
Enter value for column_name: salsalEnter value for condition: sal>=3000sal>=3000Enter value for order_column: enameename
EMPNO ENAME JOB SAL--------- ---------- --------- --------- 7902 FORD ANALYST 3000 7839 KING PRESIDENT 5000 7788 SCOTT ANALYST 3000
8-10 Copyright Oracle Corporation, 1998. All rights reserved.
Using the && Substitution VariableUsing the && Substitution Variable
Use the double-ampersand (&&) if you Use the double-ampersand (&&) if you want to reuse the variable value without want to reuse the variable value without prompting the user each time.prompting the user each time.
Use the double-ampersand (&&) if you Use the double-ampersand (&&) if you want to reuse the variable value without want to reuse the variable value without prompting the user each time.prompting the user each time.
SQL> SELECT empno, ename, job, &&column_name 2 FROM emp 3 ORDER BY &column_name;
Enter value for column_name: deptnodeptno EMPNO ENAME JOB DEPTNO--------- ---------- --------- --------- 7839 KING PRESIDENT 10 7782 CLARK MANAGER 10 7934 MILLER CLERK 10...14 rows selected.
8-11 Copyright Oracle Corporation, 1998. All rights reserved.
Defining User VariablesDefining User Variables
• You can predefine variables using one of two SQL*Plus commands:
– DEFINE: Create a CHAR datatype user variable
– ACCEPT: Read user input and store it in a variable
• If you need to predefine a variable that includes spaces, you must enclose the value within single quotation marks when using the DEFINE command.
• You can predefine variables using one of two SQL*Plus commands:
– DEFINE: Create a CHAR datatype user variable
– ACCEPT: Read user input and store it in a variable
• If you need to predefine a variable that includes spaces, you must enclose the value within single quotation marks when using the DEFINE command.
8-12 Copyright Oracle Corporation, 1998. All rights reserved.
The ACCEPT CommandThe ACCEPT Command
• Creates a customized prompt when accepting user input
• Explicitly defines a NUMBER or DATE datatype variable
• Hides user input for security reasons
• Creates a customized prompt when accepting user input
• Explicitly defines a NUMBER or DATE datatype variable
• Hides user input for security reasons
ACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE]
ACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE]
8-13 Copyright Oracle Corporation, 1998. All rights reserved.
Using the ACCEPT CommandUsing the ACCEPT Command
ACCEPT dept PROMPT 'Provide the department name: 'SELECT * FROM deptWHERE dname = UPPER('&dept')/
Provide the department name: SalesSales
DEPTNO DNAME LOC--------- -------------- ------------- 30 SALES CHICAGO
8-14 Copyright Oracle Corporation, 1998. All rights reserved.
DEFINE and UNDEFINE CommandsDEFINE and UNDEFINE Commands
• A variable remains defined until you either:
– Use the UNDEFINE command to clear it
– Exit SQL*Plus
• You can verify your changes with the DEFINE command.
• To define variables for every session, modify your login.sql file so that the variables are created at startup.
• A variable remains defined until you either:
– Use the UNDEFINE command to clear it
– Exit SQL*Plus
• You can verify your changes with the DEFINE command.
• To define variables for every session, modify your login.sql file so that the variables are created at startup.
8-15 Copyright Oracle Corporation, 1998. All rights reserved.
Using the DEFINE CommandUsing the DEFINE Command
• Create a variable to hold the department name.
• Create a variable to hold the department name.
DEFINE DEPTNAME = "sales" (CHAR) DEFINE DEPTNAME = "sales" (CHAR)
• Use the variable as you would any other variable.
• Use the variable as you would any other variable.
SQL> DEFINE deptname = salesSQL> DEFINE deptname
SQL> SELECT * 2 FROM dept 3 WHERE dname = UPPER('&deptname');
8-16 Copyright Oracle Corporation, 1998. All rights reserved.
Customizing the SQL*Plus Environment
Customizing the SQL*Plus Environment
• Use SETSET commands to control current session.
• Verify what you have set by using the SHOWSHOW command.
• Use SETSET commands to control current session.
• Verify what you have set by using the SHOWSHOW command.
SQL> SET ECHO ONSQL> SET ECHO ON
SQL> SHOW ECHOecho ONecho ON
SQL> SHOW ECHOecho ONecho ON
SET system_variable value SET system_variable value
8-17 Copyright Oracle Corporation, 1998. All rights reserved.
SET Command VariablesSET Command Variables
• ARRAYSIZE {ARRAYSIZE {2020 | | nn}}
• COLSEP {_ | COLSEP {_ | texttext}}
• FEEDBACKFEEDBACK { {66 | | nn |OFF | ON} |OFF | ON}
• HEADING {OFF | HEADING {OFF | ONON}}
• LINESIZE {LINESIZE {8080 | | nn} }
• LONG {LONG {8080 | | nn}}
• PAGESIZE {PAGESIZE {2424 | | nn}}
• PAUSE {PAUSE {OFFOFF | ON | | ON | texttext}}
• TERMOUT {OFF | TERMOUT {OFF | ONON}}
• ARRAYSIZE {ARRAYSIZE {2020 | | nn}}
• COLSEP {_ | COLSEP {_ | texttext}}
• FEEDBACKFEEDBACK { {66 | | nn |OFF | ON} |OFF | ON}
• HEADING {OFF | HEADING {OFF | ONON}}
• LINESIZE {LINESIZE {8080 | | nn} }
• LONG {LONG {8080 | | nn}}
• PAGESIZE {PAGESIZE {2424 | | nn}}
• PAUSE {PAUSE {OFFOFF | ON | | ON | texttext}}
• TERMOUT {OFF | TERMOUT {OFF | ONON}}
8-18 Copyright Oracle Corporation, 1998. All rights reserved.
Saving Customizations in the login.sql File
Saving Customizations in the login.sql File
• The login.sql file contains standard SET and other SQL*Plus commands that are implemented at login.
• You can modify login.sql to contain additional SET commands.
• The login.sql file contains standard SET and other SQL*Plus commands that are implemented at login.
• You can modify login.sql to contain additional SET commands.
8-19 Copyright Oracle Corporation, 1998. All rights reserved.
SQL*Plus Format CommandsSQL*Plus Format Commands
• COLUMN [COLUMN [column optioncolumn option] ]
• TTITLE [TTITLE [texttext | OFF | ON] | OFF | ON]
• BTITLE [BTITLE [texttext | OFF | ON] | OFF | ON]
• BREAK [ON BREAK [ON report_elementreport_element]]
8-20 Copyright Oracle Corporation, 1998. All rights reserved.
The COLUMN CommandThe COLUMN Command
Controls display of a columnControls display of a column
• CLE[AR]: Clears any column formats
• FOR[MAT] format: Changes the display of the column using a format model
• HEA[DING] text: Sets the column heading
• JUS[TIFY] {align}: Aligns the column heading to be left, center, or right
Controls display of a columnControls display of a column
• CLE[AR]: Clears any column formats
• FOR[MAT] format: Changes the display of the column using a format model
• HEA[DING] text: Sets the column heading
• JUS[TIFY] {align}: Aligns the column heading to be left, center, or right
COL[UMN] [{column|alias} [option]]COL[UMN] [{column|alias} [option]]
8-21 Copyright Oracle Corporation, 1998. All rights reserved.
Using the COLUMN CommandUsing the COLUMN Command
• Create column headings.• Create column headings.
• Display the current setting for the ENAME column.
• Display the current setting for the ENAME column.
• Clear settings for the ENAME column.• Clear settings for the ENAME column.
COLUMN ename HEADING 'Employee|Name' FORMAT A15COLUMN sal JUSTIFY LEFT FORMAT $99,990.00COLUMN mgr FORMAT 999999999 NULL 'No manager'
COLUMN ename HEADING 'Employee|Name' FORMAT A15COLUMN sal JUSTIFY LEFT FORMAT $99,990.00COLUMN mgr FORMAT 999999999 NULL 'No manager'
COLUMN enameCOLUMN ename
COLUMN ename CLEARCOLUMN ename CLEAR
8-22 Copyright Oracle Corporation, 1998. All rights reserved.
COLUMN Format ModelsCOLUMN Format Models
Result
N/A
1234
01234
$1234
L1234
1234.00
1,234
Example
N/A
999999
099999
$9999
L9999
9999.99
9,999
Element
An
9
0
$
L
.
,
Description
Sets a display width of n
Single zero-suppression
digit
Enforces leading zero
Floating dollar sign
Local currency
Position of decimal point
Thousand separator
8-23 Copyright Oracle Corporation, 1998. All rights reserved.
Using the BREAK CommandUsing the BREAK Command
Suppresses duplicates and sections rowsSuppresses duplicates and sections rows
• To suppress duplicates
Suppresses duplicates and sections rowsSuppresses duplicates and sections rows
• To suppress duplicates
SQL> BREAK ON ename ON jobSQL> BREAK ON ename ON job
SQL> BREAK ON ename SKIP 4 ON job SKIP2 SQL> BREAK ON ename SKIP 4 ON job SKIP2
• To section out rows at break values • To section out rows at break values
8-24 Copyright Oracle Corporation, 1998. All rights reserved.
Using the TTITLE and BTITLE Commands
Using the TTITLE and BTITLE Commands
Display headers and footers.Display headers and footers.Display headers and footers.Display headers and footers.
TTI[TLE] [text|OFF|ON]TTI[TLE] [text|OFF|ON]
SQL> TTITLE 'Salary|Report'SQL> TTITLE 'Salary|Report'
• Set the report header. • Set the report header.
• Set the report footer.• Set the report footer.
SQL> BTITLE 'Confidential'SQL> BTITLE 'Confidential'
8-25 Copyright Oracle Corporation, 1998. All rights reserved.
Creating a Script File to Run a Report
Creating a Script File to Run a Report
1. Create the SQL SELECT statement.
2. Save the SELECT statement to a script file.
3. Load the script file into an editor.
4. Add formatting commands before the SELECT statement.
5. Verify that the termination character follows the SELECT statement.
1. Create the SQL SELECT statement.
2. Save the SELECT statement to a script file.
3. Load the script file into an editor.
4. Add formatting commands before the SELECT statement.
5. Verify that the termination character follows the SELECT statement.
8-26 Copyright Oracle Corporation, 1998. All rights reserved.
Creating a Script File to Run a Report
Creating a Script File to Run a Report
6. Clear formatting commands after the SELECT statement.
7. Save the script file.
8. Enter “START filename” to run the script.
6. Clear formatting commands after the SELECT statement.
7. Save the script file.
8. Enter “START filename” to run the script.
8-27 Copyright Oracle Corporation, 1998. All rights reserved.
Sample ReportSample Report
Fri Oct 24 page 1 Employee Report
JobCategory Employee Salary----------------------- ----------------------- -----------------CLERK ADAMS $1,100.00 JAMES $950.00 MILLER $1,300.00 SMITH $800.00MANAGER BLAKE $2,850.00 CLARK $2,450.00 JONES $2,975.00SALESMAN ALLEN $1,600.00 MARTIN $1,250.00 TURNER $1,500.00 WARD $1,250.00
Confidential
8-28 Copyright Oracle Corporation, 1998. All rights reserved.
SummarySummary
• Use SQL*Plus substitution variables to temporarily store values.
• Use SET commands to control current SQL*Plus environment.
• Use the COLUMN command to control the display of a column.
• Use the BREAK command to suppress duplicates and section rows.
• Use TTITLE and BTITLE to display headers and footers.
• Use SQL*Plus substitution variables to temporarily store values.
• Use SET commands to control current SQL*Plus environment.
• Use the COLUMN command to control the display of a column.
• Use the BREAK command to suppress duplicates and section rows.
• Use TTITLE and BTITLE to display headers and footers.
8-29 Copyright Oracle Corporation, 1998. All rights reserved.
Practice OverviewPractice Overview
• Creating a query to display values using substitution variables
• Starting a command file containing variables
• Using the ACCEPT command
• Creating a query to display values using substitution variables
• Starting a command file containing variables
• Using the ACCEPT command