8 producing readable output with sql*plus. 8-2 objectives at the end of this lesson, you should be...

29
8 Producing Readable Output with SQL*Plus

Upload: ethelbert-eaton

Post on 04-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8

Producing Readable Output with SQL*Plus

Producing Readable Output with SQL*Plus

Page 2: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-2

ObjectivesObjectives

At the end of this lesson, you should be able to:• Produce queries that require an input

variable• Customize the SQL*Plus environment• Produce more readable output• Create and execute script files• Save customizations

At the end of this lesson, you should be able to:• Produce queries that require an input

variable• Customize the SQL*Plus environment• Produce more readable output• Create and execute script files• Save customizations

Page 3: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-3

Interactive ReportsInteractive Reports

I want to input query values at runtime....sal = ? …

… deptno = ? … .. ename = ? ...

User

Page 4: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-4

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

Page 5: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-5

Using the & Substitution VariableUsing the & Substitution Variable

Use a variable prefixed with an ampersand (&) to prompt the user for a value.Use a variable prefixed with an ampersand (&) 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: 7369

EMPNO ENAME SAL DEPTNO--------- ---------- --------- --------- 7369 SMITH 800 20

Page 6: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-6

Using the SET VERIFY CommandUsing the SET VERIFY Command

Toggling the display of the text of a command before and after SQL*Plus replaces substitution variables with values.

Toggling the display of the text of a command before and after SQL*Plus 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

...

Page 7: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-7

Character and Date Values with Substitution VariablesCharacter and Date Values with Substitution Variables

Use single quotation marks for date and character values.Use single quotation marks for date and character values.

SQL> SELECT ename, deptno, sal*12 2 FROM emp 3 WHERE job='&job_title';

Enter value for job_title: ANALYST

ENAME DEPTNO SAL*12---------- --------- ---------SCOTT 20 36000FORD 20 36000

Page 8: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-8

Specifying Column Names, Expressions, and Text at Runtime

Specifying Column Names, Expressions, and Text at Runtime

Use substitution variables to supplement• A WHERE condition• An ORDER BY clause• A column expression• A table name• An entire SELECT statement

Use substitution variables to supplement• A WHERE condition• An ORDER BY clause• A column expression• A table name• An entire SELECT statement

Page 9: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-9

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: salEnter value for condition: sal>=3000Enter value for order_column: ename

EMPNO ENAME JOB SAL--------- ---------- --------- --------- 7902 FORD ANALYST 3000 7839 KING PRESIDENT 5000 7788 SCOTT ANALYST 3000

Page 10: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-10

Using the && Substitution VariableUsing the && Substitution Variable

Use the double-ampersand (&&) if you want to reuse the variable value without prompting the user each time.

Use the double-ampersand (&&) if you want to reuse the variable value without 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: deptno EMPNO ENAME JOB DEPTNO--------- ---------- --------- --------- 7839 KING PRESIDENT 10 7782 CLARK MANAGER 10 7934 MILLER CLERK 10...14 rows selected.

Page 11: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-11

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 use a single space when

using the DEFINE command, you must enclose the space within single quotation marks.

• 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 use a single space when

using the DEFINE command, you must enclose the space within single quotation marks.

Page 12: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-12

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}

Page 13: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-13

Using the ACCEPT CommandUsing the ACCEPT Command

ACCEPT dept PROMPT 'Provide the department name: 'SELECT * FROM deptWHERE dname = UPPER('&dept')/

Provide the department name: Sales

DEPTNO DNAME LOC--------- -------------- ------------- 30 SALES CHICAGO

Page 14: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-14

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.

Page 15: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-15

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');

Page 16: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-16

Customizing the SQL*Plus Environment

Customizing the SQL*Plus Environment

• Use SET commands to control current session.

• Verify what you have set by using the SHOW command.

• Use SET commands to control current session.

• Verify what you have set by using the SHOW command.

SQL> SET ECHO ONSQL> SET ECHO ON

SQL> SHOW ECHOecho ON

SQL> SHOW ECHOecho ON

SET system_variable value SET system_variable value

Page 17: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-17

SET Command VariablesSET Command Variables

• ARRAYSIZE {20 | n}• COLSEP {_ | text}• FEEDBACK {6 | n |OFF | ON}• HEADING {OFF | ON}• LINESIZE {80 | n} • LONG {80 | n}• PAGESIZE {24 | n}• PAUSE {OFF | ON | text}• TERMOUT {OFF | ON}

• ARRAYSIZE {20 | n}• COLSEP {_ | text}• FEEDBACK {6 | n |OFF | ON}• HEADING {OFF | ON}• LINESIZE {80 | n} • LONG {80 | n}• PAGESIZE {24 | n}• PAUSE {OFF | ON | text}• TERMOUT {OFF | ON}

Page 18: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-18

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.

Page 19: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-19

SQL*Plus Format CommandsSQL*Plus Format Commands

•COLUMN [column option]

• TTITLE [text | OFF | ON]

•BTITLE [text | OFF | ON]

•BREAK [ON report_element]

Page 20: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-20

The COLUMN CommandThe COLUMN Command

Controls 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 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]]

Page 21: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-21

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

Page 22: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-22

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

Page 23: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-23

Using the BREAK CommandUsing the BREAK Command

Suppresses duplicates and sections rows• To suppress duplicates

Suppresses duplicates and sections rows• To suppress duplicates

SQL> BREAK ON ename ON jobSQL> BREAK ON ename ON job

SQL> BREAK ON reportSQL> BREAK ON report

SQL> BREAK ON ename SKIP 4 ON job SKIP2 SQL> BREAK ON ename SKIP 4 ON job SKIP2

• To produce grand totals• To produce grand totals

• To section out rows at break values • To section out rows at break values

Page 24: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-24

Using the TTITLE and BTITLE Commands

Using the TTITLE and BTITLE Commands

Display headers and footersDisplay 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'

Page 25: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-25

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.

Page 26: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-26

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.

Page 27: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-27

Sample ReportSample Report

Fri Oct 24 page 1 Employee Report

JobCategory Employee Salary----------------------- ----------------------- -----------------CLERK ADAMS $1,100.00CLERK JAMES $950.00CLERK MILLER $1,300.00CLERK SMITH $800.00MANAGER BLAKE $2,850.00MANAGER CLARK $2,450.00MANAGER JONES $2,975.00SALESMAN ALLEN $1,600.00SALESMAN MARTIN $1,250.00SALESMAN TURNER $1,500.00SALESMAN WARD $1,250.00

Confidential

Page 28: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-28

SummarySummary

Substitution variables can be used in script files with the following:• Single ampersand• Double ampersand• ACCEPT command• DEFINE command• UNDEFINE command• A command line

Substitution variables can be used in script files with the following:• Single ampersand• Double ampersand• ACCEPT command• DEFINE command• UNDEFINE command• A command line

Page 29: 8 Producing Readable Output with SQL*Plus. 8-2 Objectives At the end of this lesson, you should be able to: Produce queries that require an input variable

8-29

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