Copyright Oracle Corporation, All rights reserved. 8 Producing Readable Output with SQL*Plus
8-2 Copyright Oracle Corporation, All rights reserved. Objectives After completing this lesson, you should 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 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, All rights reserved. Interactive Reports I want to input query values at runtime....sal = ? … … deptno = ? ….. ename = ?... User
8-4 Copyright Oracle Corporation, All rights reserved. Substitution 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, All rights reserved. Using the & Substitution Variable Use a variable prefixed with an ampersand (&) to prompt the user for a value. SQL> SELECTempno, ename, sal, deptno 2 FROMemp 3 WHEREempno = &employee_num; 7369 Enter value for employee_num: 7369 EMPNO ENAME SAL DEPTNO SMITH
8-6 Copyright Oracle Corporation, All rights reserved. Using the SET VERIFY Command Toggling the display of the text of a command before and after SQL*Plus replaces substitution variables with values. SQL> SET VERIFY ON SQL> SELECTempno, ename, sal, deptno 2 FROMemp 3 WHEREempno = &employee_num; Enter value for employee_num: 7369 old 3: WHERE empno = &employee_num new 3: WHERE empno =
8-7 Copyright Oracle Corporation, All rights reserved. Character and Date Values with Substitution Variables Use single quotation marks for date and character values. SQL> SELECT ename, deptno, sal*12 2 FROM emp 3 WHERE job='&job_title'; ANALYST Enter value for job_title: ANALYST ENAME DEPTNO SAL* SCOTT FORD
8-8 Copyright Oracle Corporation, All rights reserved. Specifying Column Names, Expressions, and Text at Runtime Use substitution variables to supplement the following: WHERE condition ORDER BY clause Column expression Table name Entire SELECT statement Use substitution variables to supplement the following: WHERE condition ORDER BY clause Column expression Table name Entire SELECT statement
8-9 Copyright Oracle Corporation, All rights reserved. Specifying Column Names, Expressions, and Text at Runtime SQL> SELECTempno, ename, job, &column_name 2 FROMemp 3 WHERE&condition 4 ORDER BY&order_column; sal Enter value for column_name: sal sal>=3000 Enter value for condition: sal>=3000 ename Enter value for order_column: ename EMPNO ENAME JOB SAL FORD ANALYST KING PRESIDENT SCOTT ANALYST 3000
8-10 Copyright Oracle Corporation, All rights reserved. Using the && Substitution Variable Use the double-ampersand (&&) if you want to reuse the variable value without prompting the user each time. SQL> SELECTempno, ename, job, &&column_name 2 FROMemp 3 ORDER BY&column_name; deptno Enter value for column_name: deptno EMPNO ENAME JOB DEPTNO KING PRESIDENT CLARK MANAGER MILLER CLERK rows selected.
8-11 Copyright Oracle Corporation, All rights reserved. Defining 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, All rights reserved. The 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, All rights reserved. Using the ACCEPT Command ACCEPT dept PROMPT 'Provide the department name: ' SELECT * FROM dept WHERE dname = UPPER('&dept') / Sales Provide the department name: Sales DEPTNO DNAME LOC SALES CHICAGO
8-14 Copyright Oracle Corporation, All rights reserved. DEFINE 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, All rights reserved. Using the DEFINE Command Create a variable to hold the department name. DEFINE DEPTNAME = "sales" (CHAR) Use the variable as you would any other variable. SQL> DEFINE deptname = sales SQL> DEFINE deptname SQL> SELECT * 2 FROM dept 3 WHERE dname = UPPER('&deptname');
8-16 Copyright Oracle Corporation, All rights reserved. Customizing the SQL*Plus Environment SETUse SET commands to control current session. SHOWVerify what you have set by using the SHOW command. SETUse SET commands to control current session. SHOWVerify what you have set by using the SHOW command. SQL> SET ECHO ON SQL> SHOW ECHO echo ON SQL> SHOW ECHO echo ON SET system_variable value
8-17 Copyright Oracle Corporation, All rights reserved. SET Command Variables ARRAYSIZE {20 | n}ARRAYSIZE {20 | n} COLSEP {_ | text}COLSEP {_ | text} FEEDBACK {6 | n |OFF | ON}FEEDBACK {6 | n |OFF | ON} HEADING {OFF | ON}HEADING {OFF | ON} LINESIZE {80 | n}LINESIZE {80 | n} LONG {80 | n}LONG {80 | n} PAGESIZE {24 | n}PAGESIZE {24 | n} PAUSE {OFF | ON | text}PAUSE {OFF | ON | text} TERMOUT {OFF | ON}TERMOUT {OFF | ON} ARRAYSIZE {20 | n}ARRAYSIZE {20 | n} COLSEP {_ | text}COLSEP {_ | text} FEEDBACK {6 | n |OFF | ON}FEEDBACK {6 | n |OFF | ON} HEADING {OFF | ON}HEADING {OFF | ON} LINESIZE {80 | n}LINESIZE {80 | n} LONG {80 | n}LONG {80 | n} PAGESIZE {24 | n}PAGESIZE {24 | n} PAUSE {OFF | ON | text}PAUSE {OFF | ON | text} TERMOUT {OFF | ON}TERMOUT {OFF | ON}
8-18 Copyright Oracle Corporation, All rights reserved. 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, All rights reserved. SQL*Plus Format Commands COLUMN [column option] COLUMN [column option] TTITLE [text | OFF | ON] TTITLE [text | OFF | ON] BTITLE [text | OFF | ON] BTITLE [text | OFF | ON] BREAK [ON report_element] BREAK [ON report_element]
8-20 Copyright Oracle Corporation, All rights reserved. The 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]]
8-21 Copyright Oracle Corporation, All rights reserved. Using the COLUMN Command Create column headings. Display the current setting for the ENAME column. Clear settings for the ENAME column. COLUMN ename HEADING 'Employee|Name' FORMAT A15 COLUMN sal JUSTIFY LEFT FORMAT $99, COLUMN mgr FORMAT NULL 'No manager' COLUMN ename HEADING 'Employee|Name' FORMAT A15 COLUMN sal JUSTIFY LEFT FORMAT $99, COLUMN mgr FORMAT NULL 'No manager' COLUMN ename COLUMN ename CLEAR
8-22 Copyright Oracle Corporation, All rights reserved. COLUMN Format Models Result N/A $1234 L ,234 Example N/A $9999 L ,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, All rights reserved. Using the BREAK Command Suppresses duplicates and sections rows To suppress duplicates Suppresses duplicates and sections rows To suppress duplicates SQL> BREAK ON ename ON job SQL> BREAK ON ename SKIP 4 ON job SKIP2 To section out rows at break values
8-24 Copyright Oracle Corporation, All rights reserved. Using the TTITLE and BTITLE Commands Display headers and footers. TTI[TLE] [text|OFF|ON] SQL> TTITLE 'Salary|Report' Set the report header. Set the report footer. SQL> BTITLE 'Confidential'
8-25 Copyright Oracle Corporation, All rights reserved. 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, All rights reserved. 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, All rights reserved. Sample Report Fri Oct 24 page 1 Employee Report Job Category Employee Salary CLERK ADAMS $1, JAMES $ MILLER $1, SMITH $ MANAGER BLAKE $2, CLARK $2, JONES $2, SALESMAN ALLEN $1, MARTIN $1, TURNER $1, WARD $1, Confidential
8-28 Copyright Oracle Corporation, All rights reserved. Summary 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, All rights reserved. Practice 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
8-30 Copyright Oracle Corporation, All rights reserved.
8-31 Copyright Oracle Corporation, All rights reserved.
8-32 Copyright Oracle Corporation, All rights reserved.