1. Trang chủ
  2. » Công Nghệ Thông Tin

Oracle SQL Plus The Definitive Guide- P44 pdf

10 283 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 102,47 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

SET 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

Ngày đăng: 05/07/2014, 04:20

TỪ KHÓA LIÊN QUAN