The following example shows the effect of issuing a SET TIME ON command: SQL> SET TIME ON 22:44:41 SQL> SET VERIFY The VERIFY setting controls whether or not SQL*Plus displays before and
Trang 1SET SQLPROMPT &&prompt_dbname>
SET TERMOUT ON
These commands will set your prompt to the global database name The global name comes from the global_name view, and may or may not be the same as the connect string you used to connect to the database By placing these
commands in your login.sql file, you ensure that the prompt will be set automatically, based on the database you are
connecting to, whenever you start SQL*Plus
LOGIN.SQL is executed only when SQL*Plus starts Using the
CONNECT command to connect to another database will not cause the prompt
to be changed to reflect the new connection
The login.sql file was discussed earlier in this chapter, in the section titled The Site and User Profiles.
SET TERMOUT
Controls whether or not SQL*Plus displays output generated by SQL statements, PL/SQL blocks, and SQL*Plus
commands This setting only applies when SQL*Plus is executing a script file SQL*Puls always displays output from commands entered interactively
SET TERM[OUT] {OFF¦ON}
where:
SET TERM[OUT]
Is the command, which may be abbreviated to SET TERM
OFF
Turns terminal output off
ON
Turns terminal output on This is the default setting
Terminal output is often turned off while a command file is running to keep the user's screen from becoming cluttered with query output and feedback messages
SET TIME
The SET TIME command controls whether or not SQL*Plus displays the current time with each command prompt: SET TI[ME] {OFF ¦ON}
Trang 2
SET TI[ME]
Is the command, which may be abbreviated to SET TI
OFF
Keeps the time from being displayed with the prompt This is the default setting
ON
Causes the time to be displayed as part of each prompt
The following example shows the effect of issuing a SET TIME ON command:
SQL> SET TIME ON
22:44:41 SQL>
SET VERIFY
The VERIFY setting controls whether or not SQL*Plus displays before and after images of each line that contains a substitution variable:
SET VER[IFY] {OFF¦ON}
where:
SET VER[IFY]
Is the command, which may be abbreviated to SET VER
OFF
Turns verification off
ON
Turns verification on Lines containing substitution variables will be displayed before and after the substitution occurs This is the default setting
Verification is done only on lines that are part of a SQL statement or a PL/SQL block When substitution occurs in a SQL*Plus command, before and after images are never displayed The following example shows what verification looks like:
SQL> DEFINE dummy_char = X
SQL> SELECT * FROM dual
2 WHERE dummy = &&dummy_char;
old 2: where dummy = &&dummy_char
new 2: where dummy = X
D
-
X
Notice that line 2, which contained the reference to the&&dummy_char substitution variable, was displayed both before and after the reference to the variable was
Trang 3
replaced by its value If you don't like this display, you can turn it off with SET VERIFY OFF.
Input Settings
Input settings control some aspects of the way commands are entered Many of these settings allow you to specify alternative characters for command separators, PL/SQL block terminators, continuation prompts, and so forth Other settings let you force commands to be uppercased, and allow you to enter blank lines as part of an SQL statement Here
is complete list of input settings:
BLOCKTERMINATOR
Specifies the character used to terminate entry of a PL/SQL block
BUFFER
Allows you edit using multiple buffers
CMDSEP
Controls whether or not you may enter multiple SQL*Plus commands on one line, and also specifies the character used
to separate those commands
SQLBLANKUNES
Controls whether or not you may enter blank lines as part of a SQL statement
SQLCASE
Controls automatic case conversion of SQL statements and PL/SQL blocks
SQLCONTINUE
Contains the text of the prompt you get when you use the SQL*Plus continuation character to continue a long command
to a new line
SQLNUMBER
Controls whether or not SQL*Plus uses the line number as a prompt when you enter a multiline SQL statement
SQLPREFIX
Specifies the SQL*Plus prefix character, which allows you to execute a SQL*Plus command while entering a SQL statement or PL/SQL block into the buffer
SQLTERMINATOR
Controls whether or not you can use a semicolon to execute a SQL statement, and also lets you specify a different
character to be used for that purpose
SUFFIX
Contains the default extension used for command files
The following sections describe each of these settings
Trang 4
The BLOCKTERMINATOR setting controls the character used to terminate a PL/ SQL block that is being entered into the buffer for editing:
SET BLO [CKTERMINATOR] block_term_char
where:
SET BLO[CKTERMINATOR]
Is the command, which may be abbreviated to SET BLO
block_term_char
Is the new terminator character for use when entering PL/SQL blocks The default value is a period
When you enter a PL/SQL block into the buffer, you need a way to tell SQL*Plus when the block has ended By
default, the period can be used for this purpose, but you can use the SET BLOCKTERMINATOR command to change that The following example shows how this is done by changing the block terminator to a pound sign character:
SQL> SET BLOCKTERMINATOR #
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE (PL/SQL is powerful.);
3 END;
4 #
SQL>
Terminating the block this way leaves it in the buffer for you to edit Do not confuse this with the use of the slash
command, which both terminates and executes a block
Changing the terminator to a slash character, by using SET BLOCKTERMINATOR /, prevents you from subsequently using the / character
to execute the contents of the buffer
BUFFER
The SET BUFFER command allows you to switch to another buffer for editing purposes:
SET BUF[FER] {buffer_name¦SQL}
where:
SET BUF[FER]
Is the command, which may be abbreviated to SET BUF
Trang 5
buffer_name
Is the name of the buffer you want to edit You can make up any name you like If the named buffer does not yet exist, SQL*Plus will create it for you
SQL
Switches you to the SQL buffer This is the default setting The SQL buffer is the one used when you type in a SQL statement at the command prompt, and is also the only buffer from which you can execute a SQL statement (or PL/ SQL block)
Changing the buffer has limited use, because you can only execute a statement from the SQL buffer The GET, SAVE, and EDIT commands work, as do all the editing commands The following example shows a second buffer being used
to edit a statement that exists in a text file without disturbing the statement currently in the SQL buffer:
SQL> SHOW BUFFER
buffer SQL
SQL> SELECT * FROM employee
2
SQL> L
1* SELECT * FROM employee
SQL> SELECT BUFFER project
SQL> L
No lines in PROJECT buffer
SQL> GET c:\a\project.sql
1* SELECT * FROM project
SQL> I
2 WHERE project_budget > 1000000
3
SQL> SAVE c:\a\project.sql REPLACE
Wrote file c:\a\project.sql
SQL> SET BUFFER SQL
SQL> L
1* SELECT * FROM employee
SQL>
As you can see, using a second buffer made it possible to edit the SQL statement in the project.sql file without
disturbing the statement currently in the SQL buffer Of course, you could do the same thing more easily with the EDIT command, so SET BUFFER isn't used much anymore
CMDSEP
The SET CMDSEP command controls whether or not you can enter multiple commands on one line The commands in question must both be SQL*Plus commands SET CMDSEP is also used to change the character used to separate these commands:
SET CMDS[EP] {OFF¦ON¦separator_char
Trang 6
SETCMDS[EP]
Is the command, which may be abbreviated to SET CMDS
OFF
Turns the feature off, requiring you to enter each command on a separate line
This is the default setting
ON
Allows you to enter multiple SQL*Plus commands on one line, and resets the separator character back to the default of
a semicolon
separator_char
Causes SQL*Plus to recognize the specified character as the command separator You won't be allowed to make the command separator an alphabetic, numeric, or space character This character may optionally be enclosed in either single or double quotes In some cases, such as when you change it to a semicolon, you will need the quotes
The following example turns this feature on, sets the separator character to an exclamation point, and shows how two commands may be placed on one line:
SQL> SET CMDSEP ON
SQL> SET CMDSEP !
SQL> SHOW CMDSEP! SHOW BUFFER!
cmdsep ! (hex 21)
buffer SQL
SQL>
SQLBLANKLINES
The SQLBLANKLINES setting is a new feature in version 8.1 of SQL*Plus, and allows SQL statements to contain embedded blank lines:
SET SQLBLANKLINES {OFF¦ON}
where:
SET SQLBLANKLINES
Is the command
OFF
Turns this feature off This is the default setting, and does not allow a SQL statement to have embedded blank lines
ON
Turns the feature on, and allows you to enter a SQL statement with an embedded blank line
Trang 7
Pressing ENTER on a blank line while typing a SQL statement into SQL*Plus normally signals the end of the
statement The statement is then placed into the buffer, and you then have the option of making further edits or of
executing the statement Turning SQLBLANKLINES on allows you to put a blank line in the middle of your statement,
as the following example demonstrates:
SQL> SET SQLBLANKLINES ON
SQL> SELECT
2 *
3
4 FROM EMPLOYEE
5
SQL>
This feature was added to SQL*Plusto allow it to execute existing Server Manager scripts, such as CATPROC.SQL,
without having to go through and modify all the SQL statements in those scripts Unlike SQL*Plus, the Server Manager utility allows blank lines in a SQL statement
Oracle plans to desupport Server Manager at some future date, leaving SQL*Plus as the only command-line interface into the Oracle database
SQLCASE
The SQLCASE setting controls whether or not SQL*Plus automatically uppercases or lowercases SQL statements and PL/SQL blocks as they are transmitted to the server for execution:
SET SQLC[ASE] {MIXED¦UPPER¦LOWER}
where:
SET SQLC[ASE]
Is the command, which may be abbreviate to SET SQLC
MIXED
Leaves each statement just as you entered it This is the default setting
UPPER
Uppercases each statement, including any quoted text literals
LOWER
Lowercases each statement, including any quoted text literals
Be careful when changing this setting Any case conversions SQL*Plus does will affect not only your SQL statement keywords, but also any quoted text literals as well This is seldom desirable behavior The following example
demonstrates this
Trang 8
SQL> SET SQLCASE UPPER
SQL> SELECT * FROM dual WHERE dummy=x;
D
-
X
You can see that the SELECT statement succeeded, even though the lowercase x in the WHERE clause does not match the uppercase X in the dummy column
Case conversion occurs when the statement is transmitted to the database server The contents of the buffer will always reflect what you actually typed
SQLCONTINUE
The SQLCONTINUE setting controls the prompt used when you continue a statement to a second line, using the
SQL*Plus continuation character:
SET SQLCO[NTINUE] continuation_prompt
where:
SET SQLCO[NTINUE]
Is the command, which may be abbreviated to SET SQLCO
continuation_prompt
Is the new continuation prompt The default value is >the greater-than character The prompt may optionally be
enclosed in either single or double quotes
The following example shows the effect of changing this setting:
SQL> SET SQLCONTINUE continue >
SQL> DESCRIBE -
Continue >
Notice that the SQL*Plus continuation character, a dash, was used following the DESCRIBE command The
continuation prompt is used only when you use the continuation character to continue a command to a new line It is not used when you enter a multiline SQL statement
SQLNUMBER
The SQLNUMBER setting controls whether or not SQL*Plus uses the line number as a prompt when you enter a
multiline SQL statement:
SET SQLN[UMBER] {OFF¦ON}
where:
SET SQLN[UMBER]
Is the command, which may be abbreviated to SET SQLN
Trang 9
OFF
Causes SQL*Plus to use the same prompt for all lines of a SQL statement or PL/SQL block
ON
Causes SQL*Plus to use the line number as the prompt for the second, and subsequent, lines of an SQL statement or PL/ SQL block This is the default setting
The following example shows the difference between the ON and OFF settings:
SQL> SET SQLNUMBER ON
SQL> SELECT
2 *
3 FROM dual
4
SQL> SET SQLNUMBER OFF
SQL> SELECT
SQL> *
SQL> FROM dual
SQL>
I can't imagine any reason to ever turn this setting off Look at the first and second statements in the example It's
immediately obvious that the three lines of the first query all belong together as one statement This is not so obvious with the second statementyou have to think about it a bit The visual cue provided by the line numbers is missing,
making you take more time to figure out what you are really looking at
SQLPREFIX
The SQLPREFIX setting controls the SQL*Plus prefix character The prefix character allows you to execute a
SQL*Plus command while in the middle of entering an SQL statement (or PL/SQL block)
SET SQLPRE[FIX] prefix_char
where:
Is the command, which may be abbreviated to SET SQLPRE
prefix_char
Is the new prefix character The default prefix character is a pound sign This may optionally be enclosed in either single or double quotes
The following example shows how the prefix character is used by using it to execute a DESCRIBE command while entering a SELECT statement:
SQL> SELECT
2 #DESCRIBE EMPLOYEE
Trang 10
Name Null? Type
- -
EMPLOYEE_ID NOTNULL NUMBER
EMPLOYEE_NAME VARCHAR2(40)
EMPLOYEE_HIRE_DATE DATE
EMPLOYEE_TERMINATION_DATE DATE
EMPLOYEE_BILLING_RATE NUMBER
2 employee_id, employee_name
3 FROM employee
4
This ability to execute a SQL*Plus command (and it must be a SQL*Plus command) while entering a SQL statement can come in handy when you need to quickly refresh your memory regarding the column names in the table
SQLTERMINATOR
The SQLTERMINATOR setting controls whether or not SQL*Plus allows you to use a semicolon to terminate and execute a SQL statement This setting also controls the specific character used for this purpose
SET SQLT[ERMINATOR] {OFF¦ON¦ term_char}
where:
SET SQLT[ERMINATOR]
Is the command, which may be abbreviated to SET SQLT
OFF
Turns off the feature that allows you to terminate and execute a SQL statement using a semicolon or other character
ON
Turns this feature on, and resets the terminator character to the default value of a semicolon
term_char
Is the character you want to use as a statement terminator This may optionally be enclosed in single or double quotes The following example changes the terminator character to a percent sign and uses it to terminate and execute a
SELECT statement:
SQL> SET SQLTERMINATOR %
SQL> SELECT employee_name FROM employee%
EMPLOYEE_NAME
-
Bohdan khmelnytsky
Pavlo Chubynsky
Ivan Mazepa
Taras Shevchenko