iSQL*Plus 命令语法

iSQL*Plus 命令语法

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

@ (“at”符号)
语法

@{url[.ext] } [arg...]

调用并运行由来自 Web 服务器的 URL 指定的脚本。

示例

可以运行 URL 指定的名为 YEAREND 的脚本,并以通常方法将值传递到 YEAREND 中引用的变量:

@HTTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2
@FTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2

在为处理 SQL 报告而配置的 Web 服务器上,可以使用以下命令请求 SQL*Plus 执行动态脚本:

@HTTP://machine_name.domain:port/SCRIPTSERVER?ENDOFYEAR VAL1 VAL2

--------------------------------------------------------------------------------

@@ (两个“at”符号)
语法

@@{url | file_name[.ext] } [arg...]

运行脚本。此命令与 @ (“at”符号) 命令几乎相同。运行嵌套的脚本时,它在调用脚本的 url 中查找嵌套的脚本。

示例

假定使用以下名为 PRINTRPT 的脚本:

SELECT DEPARTMENT_ID, CITY FROM EMP_DETAILS_VIEW WHERE SALARY>12000;
@EMPRPT.SQL
@@ WKRPT.SQL

假定脚本 PRINTRPT 位于 Web 服务器上,并且您使用 START HTTP://machine_name.domain:port/PRINTRPT 运行该脚本。当它执行到 @ 命令时,将在当前的工作目录中查找名为 EMPRPT 的脚本并运行该脚本。当 PRINTRPT 执行到 @@ 命令时,将在 PRINTRPT 所使用的同一 url (HTTP://machine_name.domain:port/WKRPT.SQL) 中查找名为 WKRPT 的脚本,并运行该脚本。


--------------------------------------------------------------------------------

/ (斜杠)
语法

/ (斜杠)

执行存储在 SQL 缓冲区中的最近执行过的 SQL 命令或 PL/SQL 块。

示例

键入以下 SQL 脚本:

SELECT CITY, COUNTRY_NAME
FROM EMP_DETAILS_VIEW
WHERE SALARY=12000;
输入斜杠 (/) 重新执行缓冲区中的命令:

/
CITY                           COUNTRY_NAME
------------------------------ ----------------------------------------
Seattle                        United States of America
Oxford                         United Kingdom
Seattle                        United States of America
 

 

--------------------------------------------------------------------------------

ACCEPT
语法

ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]

读取一行输入,并将其存入给定的替代变量中。

示例

要显示提示“Password: ”,并将回答放入名为 PSWD 的 CHAR 变量中,并且禁止显示,请输入

ACCEPT pswd CHAR PROMPT 'Password: ' HIDE
要显示提示“Enter weekly salary: ”并将回答放入名为 SALARY 的 NUMBER 变量中,并使用默认值 000.0,请输入

ACCEPT salary NUMBER FORMAT '999.99' DEFAULT '000.0' -
PROMPT 'Enter weekly salary:  '
要显示提示“Enter date hired: ”并将回答放入 DATE 变量 HIRED 中,所用格式为“dd/mm/yyyy”,默认值为“01/01/2003”,请输入

ACCEPT hired DATE FORMAT 'dd/mm/yyyy' DEFAULT '01/01/2003'-
PROMPT 'Enter date hired:  '
要显示提示“Enter employee lastname:”并将回答放入名为 LASTNAME 的 CHAR 变量中,请输入

ACCEPT lastname CHAR FORMAT 'A20' -
PROMPT 'Enter employee lastname:  '

--------------------------------------------------------------------------------

ARCHIVE LOG
语法

ARCHIVE LOG {LIST | STOP} | {START | NEXT | ALL | integer } [TO destination]

启动或停止自动归档联机重做日志文件,手动 (显式) 归档指定的重做日志文件,或者显示有关重做日志文件的信息。

示例

要使用在 LOG_ARCHIVE_DEST 中指定的归档目标来启动归档过程并开始自动归档,请输入

ARCHIVE LOG START
要停止自动归档,请输入

ARCHIVE LOG STOP
要将序列号为 1001 的日志文件组归档到指定的目标,请输入

ARCHIVE LOG 1001 '/vobs/oracle/dbs/arch'
“arch”指定目标设备上文件名的前缀,文件名的其余部分取决于初始化参数 LOG_ARCHIVE_FORMAT,该参数指定了归档重做日志文件的文件名格式。


--------------------------------------------------------------------------------

ATTRIBUTE
语法

ATTRIBUTE [type_name.attribute_name [option ...]]

其中,option 代表以下子句之一:

ALI[AS] alias

CLE[AR]

FOR[MAT] format

LIKE {type_name.attribute_name | alias}

ON | OFF

指定“对象类型”列的指定属性的显示特性,如 NUMBER 数据的格式。列和属性在共享公共的名称空间时,它们的名称应不同。

还列出单个属性或所有属性的当前显示特性。

示例

要将对象类型 EMPLOYEE_TYPE 的 LAST_NAME 属性设置为 20 个字符宽,请输入

ATTRIBUTE EMPLOYEE_TYPE.LAST_NAME FORMAT A20
要设置对象类型 EMPLOYEE_TYPE 的 SALARY 属性的格式,以便在显示百万美元时四舍五入到分,使用逗号作为千位分隔符,并且当值为零时显示 $0.00,请输入

ATTRIBUTE EMPLOYEE_TYPE.SALARY FORMAT $9,999,990.99

--------------------------------------------------------------------------------

BREAK
语法

BRE[AK] [ON report_element [action [action]]] ...

其中 report_element 的语法为 {column|expr|ROW|REPORT}

action 的语法为 [SKI[P] n|[SKI[P]] PAGE] [NODUP[LICATES]|DUP[LICATES]]

指定报告中进行更改的位置和要执行的格式化操作,例如:

禁止显示给定列的重复值

每次更改给定列值时跳过一行 (在 iSQL*Plus 中,只有当“预设格式的输出”为“启用”时才执行此操作)

每次更改给定列值时或者在报告的末尾打印算出的数字。

输入不带子句的 BREAK 可以列出当前的 BREAK 定义。

示例

要生成一个报告,用于打印重复的职务值、SALARY 平均值,同时还打印 SALARY 总和,则可以输入以下命令。(本示例仅选择部门 50 和 80 以及职员和销售人员的职务。)

BREAK ON DEPARTMENT_ID ON JOB_ID DUPLICATES
COMPUTE SUM OF SALARY ON DEPARTMENT_ID
COMPUTE AVG OF SALARY ON JOB_ID
SELECT DEPARTMENT_ID, JOB_ID, LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE JOB_ID IN ('SH_CLERK', 'SA_MAN')
AND DEPARTMENT_ID IN (50, 80)
ORDER BY DEPARTMENT_ID, JOB_ID;
DEPARTMENT_ID JOB_ID     LAST_NAME                     SALARY
------------- ---------- ------------------------- ----------
           50 SH_CLERK   Taylor                          3200
              SH_CLERK   Fleaur                          3100
                 .
                 .
                 .
              SH_CLERK   Gates                           2900

DEPARTMENT_ID JOB_ID     LAST_NAME                     SALARY
------------- ---------- ------------------------- ----------
           50 SH_CLERK   Perkins                         2500
              SH_CLERK   Bell                            4000
                 .
                 .
                 .
              SH_CLERK   Grant                           2600
              **********                           ----------
              avg                                        3215

DEPARTMENT_ID JOB_ID     LAST_NAME                     SALARY
------------- ---------- ------------------------- ----------

*************                                      ----------
sum                                                     64300

           80 SA_MAN     Russell                        14000
              SA_MAN     Partners                       13500
              SA_MAN     Errazuriz                      12000
              SA_MAN     Cambrault                      11000
              SA_MAN     Zlotkey                        10500
              **********                           ----------
              avg                                       12200

DEPARTMENT_ID JOB_ID     LAST_NAME                     SALARY
------------- ---------- ------------------------- ----------

*************                                      ----------
sum                                                     61000

25 rows selected.
 

 

--------------------------------------------------------------------------------

BTITLE
语法

BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]

其中,printspec 代表以下一个或多个用于放置文本并设置格式的子句:

BOLD

CE[NTER]

COL n

FORMAT text

LE[FT]

R[IGHT]

S[KIP] [n]

TAB n

将指定标题放在每页报告的底部并设置其格式,或者列出当前的 BTITLE 定义。

示例

要设置底部标题,CORPORATE PLANNING DEPARTMENT 在左侧而日期在右侧,请输入

BTITLE LEFT 'CORPORATE PLANNING DEPARTMENT' -
RIGHT '1 JAN 2001'

要将第 50 列的底部标题设置为“CONFIDENTIAL”,并且后面紧跟

六个空格和

一个日期,请输入

BTITLE COL 50 'CONFIDENTIAL'
TAB 6
'1 JAN 2001'

--------------------------------------------------------------------------------

CLEAR
语法

CL[EAR] option ...

其中,option 代表以下子句之一:

BRE[AKS]

BUFF[ER]

COL[UMNS]

COMP[UTES]

SQL

TIMI[NG]

重置或清除指定选项的当前值或设置。

示例

要清除中断,请输入

CLEAR BREAKS
要清除列定义,请输入

CLEAR COLUMNS

--------------------------------------------------------------------------------

COLUMN
语法

COL[UMN] [{column | expr} [option ...]]

其中,option 代表以下子句之一:

ALI[AS] alias

CLE[AR]

ENTMAP {ON | OFF}

FOLD_A[FTER]

FOLD_B[EFORE]

FOR[MAT] format

HEA[DING] text

JUS[TIFY] {L[EFT] | C[ENTER] | R[IGHT]}

LIKE {expr | alias}

NEWL[INE]

NEW_V[ALUE] variable

NOPRI[NT] | PRI[NT]

NUL[L] text

OLD_V[ALUE] variable

ON | OFF

WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]

指定给定列的显示属性,如

列标题的文本

列标题的对齐方式

NUMBER 数据的格式

列数据的换行

还列出单个列或所有列的当前显示属性。

数字格式

表 5-1 列出了可以在 COLUMN FORMAT 子句中和在 SET NUMFORMAT 中使用的格式。

数字格式

元素  示例  说明 
, (逗号)  9,999
 在指定位置显示逗号。 
. (句点)  99.99
 显示用于将数字的整数部分和小数部分隔开的句点 (小数点)。 
$
 $9999
 显示前导美元符号。 
0  0999 9990
 显示前导零。显示尾随零。 
9  9999
 以 9 的个数所指定的位数来显示值。如果值为正,则有前导空格,如果为负,则有前导减号。前导零显示为空格,值为零则显示零 (0)。 
B  B9999
 当整数部分为零时,不考虑格式模型中的零,将定点数的整数部分显示为空格。 
C  C999
 在指定位置显示 ISO 货币符号。 
D  99D99
 显示小数字符以分隔数字的整数部分和小数部分。 
EEEE  9.999EEEE
 以科学记数法 (格式必须准确包含四个“E”) 显示值。 
G  9G999
 在数字整数部分的指定位置上显示组分隔符。 
L  L999
 在指定位置显示本地货币符号。 
MI  9999MI
 在负值后面显示尾随减号,在正值后面显示尾随空格。 
PR  9999PR
 在 <尖括号> 中显示负值。用前导空格和尾随空格显示正值。 
RN rn  RN rn
 显示大写罗马数字。显示小写罗马数字。值可以是 1 至 3999 之间的整数。 
S  S9999 9999S
 显示前导减号或加号。显示尾随减号或加号。 
TM  TM
 显示可能的最少个数的十进制字符。默认值是 TM9。固定记数法用于输出最多 64 个字符,科学记数法用于输出超过 64 个字符。TM 的前面不能有任何其它元素。TM 后面只能有一个 9 或 E 
U  U9999
 在指定位置显示双货币符号。 
V  999V99
 显示乘以 10n 的值,其中 n 是 V 后面的 9 的个数。 
X  XXXX xxxx
 显示将值按指定位数四舍五入后的十六进制值。 


示例

要使 LAST_NAME 列的宽度为 20 个字符,并用两行显示 EMPLOYEE NAME 作为列标题,请输入

COLUMN LAST_NAME FORMAT A20 HEADING 'EMPLOYEE|NAME'
要设置 SALARY 列的格式,以百万美元显示,四舍五入到分,使用逗号分隔千分位,并且在值为零时显示 $0.00,请输入

COLUMN SALARY FORMAT $9,999,990.99
要为包含长表达式的列分配别名 NET,以美元格式显示结果并对空值显示 <NULL>,则可以输入

COLUMN SALARY+COMMISSION_PCT+BONUS-EXPENSES-INS-TAX ALIAS NET
COLUMN NET FORMAT $9,999,999.99 NULL '<NULL>'
注意,本例中将此列说明分成两个命令。第一个命令定义别名 NET,而第二个命令使用 NET 定义其格式。

还要注意,第一个命令中输入的表达式必须与 SELECT 命令中输入的表达式完全相同。否则,SQL*Plus 无法将 COLUMN 命令与相应的列匹配起来。

要对名为 REMARKS 的列中的长值换行,可以输入

COLUMN REMARKS FORMAT A20 WRAP
CUSTOMER     DATE        QUANTITY REMARKS
----------   ---------   -------- --------------------
123          25-AUG-2001 144      This order must be s
                                  hipped by air freigh
                                  t to ORD
 


要在顶部标题打印当前的日期和每个职务的名称,请输入以下内容。此处使用 HR 方案中的 EMPLOYEES 表而不是 EMP_DETAILS_VIEW。

COLUMN JOB_ID NOPRINT NEW_VALUE JOBVAR
COLUMN TODAY  NOPRINT NEW_VALUE DATEVAR
BREAK ON JOB_ID SKIP PAGE ON TODAY
TTITLE CENTER 'Job Report' RIGHT DATEVAR  SKIP 2 -
LEFT 'Job:     ' JOBVAR SKIP 2
SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY') TODAY,
LAST_NAME, JOB_ID, MANAGER_ID, HIRE_DATE, SALARY, DEPARTMENT_ID
FROM EMPLOYEES WHERE JOB_ID IN ('MK_MAN', 'SA_MAN')
ORDER BY JOB_ID, LAST_NAME;
 


要将 DATE 列的默认格式更改为“YYYY-MM-DD”,可以输入

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
Session altered.
 


有关 ALTER SESSION 命令的信息,请参阅 Oracle Database SQL Reference。


--------------------------------------------------------------------------------

COMPUTE
语法

COMP[UTE] [function [LAB[EL] text] ... OF {expr | column | alias} ... ON {expr | column | alias | REPORT | ROW} ...]

与 BREAK 命令结合,通过对所选行的子集使用各种标准计算来计算和打印汇总行。同时还列出所有的 COMPUTE 定义。

示例

要使用计算标签“TOTAL”小计“account manager”AC_MGR 和“salesman”SA_MAN 职务类别的薪水,请输入

BREAK ON JOB_ID SKIP 1;
COMPUTE SUM LABEL 'TOTAL' OF SALARY ON JOB_ID;
SELECT JOB_ID, LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE JOB_ID IN ('AC_MGR', 'SA_MAN')
ORDER BY JOB_ID, SALARY;
JOB_ID     LAST_NAME                     SALARY
---------- ------------------------- ----------
AC_MGR     Higgins                        12000
**********                           ----------
TOTAL                                     12000
SA_MAN     Zlotkey                        10500
           Cambrault                      11000
           Errazuriz                      12000
           Partners                       13500
           Russell                        14000
**********                           ----------
TOTAL                                     61000

6 rows selected.
 


要计算行政和财务部门的平均薪水和最高薪水,请输入

BREAK ON DEPARTMENT_NAME SKIP 1
COMPUTE AVG LABEL 'Dept Average' -
        MAX LABEL 'Dept Maximum' -
        OF SALARY ON DEPARTMENT_NAME
SELECT DEPARTMENT_NAME, LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE DEPARTMENT_NAME IN ('Executive', 'Accounting')
ORDER BY DEPARTMENT_NAME;
DEPARTMENT_NAME                LAST_NAME                     SALARY
------------------------------ ------------------------- ----------
Accounting                     Higgins                        12000
                               Gietz                           8300
******************************                           ----------
Dept Average                                                  10150
Dept Maximum                                                  12000

Executive                      King                           24000
                               Kochhar                        17000
                               De Haan                        17000
******************************                           ----------
Dept Average                                             19333.3333
Dept Maximum                                                  24000
 


要计算部门 <= 20 的薪水总和但不打印计算标签,请输入

COLUMN DUMMY NOPRINT
COMPUTE SUM OF SALARY ON DUMMY
BREAK ON DUMMY SKIP 1
SELECT DEPARTMENT_ID DUMMY, DEPARTMENT_ID, LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE DEPARTMENT_ID <= 20
ORDER BY DEPARTMENT_ID;
DEPARTMENT_ID LAST_NAME                     SALARY
------------- ------------------------- ----------
           10 Whalen                          4400
                                        ----------
                                              4400

           20 Hartstein                      13000
           20 Fay                             6000
                                        ----------
                                             19000
 

 

--------------------------------------------------------------------------------

CONNECT
语法

CONN[ECT] [{ logon | / } [AS {SYSOPER | SYSDBA}]]

其中 logon 的语法为 username[/password] [@connect_identifier]

将给定的用户名连接到 Oracle 数据库。运行 CONNECT 命令时,将执行站点概要文件 glogin.sql。

如果初始连接不成功,CONNECT 不会重新提示输入用户名或口令。


警告:

以纯文本包含口令有安全风险。通过省略口令,只在系统提示输入时才输入它,可避免此风险。
 


示例

要通过 Oracle Net 以用户名 HR 连接到 Oracle Net 别名为 FLEETDB 的数据库,请输入

CONNECT HR@FLEETDB

有关设置口令文件的详细信息,请参阅 Oracle Database Administrator's Guide。


--------------------------------------------------------------------------------

DEFINE
语法

DEF[INE] [variable] | [variable = text]

指定用户或预定义的变量并为其赋一个 CHAR 值,或者列出单个变量或所有变量的值和变量类型。

示例

要给变量 POS 赋值 MANAGER,则键入:

DEFINE POS = MANAGER
如果要执行的命令包含对 &POS 的引用,则 SQL*Plus 用值 MANAGER 替换 &POS,并且不提示您输入 POS 值。

要将 CHAR 值 20 赋给变量 DEPARTMENT_ID,请键入:

DEFINE DEPARTMENT_ID = 20
即使输入数字 20,SQL*Plus 仍将由 2 和 0 这两个字符所组成的 CHAR 值赋给 DEPARTMENT_ID。

要列出 DEPARTMENT_ID 的定义,请输入

DEFINE DEPARTMENT_ID
DEFINE DEPARTMENT_ID = "20" (CHAR)
 


此结果显示 DEPARTMENT_ID 的值为 20。


--------------------------------------------------------------------------------

DESCRIBE
语法

DESC[RIBE] {[schema.]object[@connect_identifier]}

列出指定表、视图或同义词的列定义或者指定函数或过程的说明。

示例

要描述视图 EMP_DETAILS_VIEW,请输入

DESCRIBE EMP_DETAILS_VIEW
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 EMPLOYEE_ID                               NOT NULL NUMBER(6)
 JOB_ID                                    NOT NULL VARCHAR2(10)
 MANAGER_ID                                         NUMBER(6)
 DEPARTMENT_ID                                      NUMBER(4)
 LOCATION_ID                                        NUMBER(4)
 COUNTRY_ID                                         CHAR(2)
 FIRST_NAME                                         VARCHAR2(20)
 LAST_NAME                                 NOT NULL VARCHAR2(25)
 SALARY                                             NUMBER(8,2)
 COMMISSION_PCT                                     NUMBER(2,2)
 DEPARTMENT_NAME                           NOT NULL VARCHAR2(30)
 JOB_TITLE                                 NOT NULL VARCHAR2(35)
 CITY                                      NOT NULL VARCHAR2(30)
 STATE_PROVINCE                                     VARCHAR2(25)
 COUNTRY_NAME                                       VARCHAR2(40)
 REGION_NAME                                        VARCHAR2(25)
 


要描述名为 CUSTOMER_LOOKUP 的过程,请输入

DESCRIBE customer_lookup
PROCEDURE customer_lookup
Argument Name           Type     In/Out   Default?
----------------------  -------- -------- ---------
CUST_ID                 NUMBER   IN
CUST_NAME               VARCHAR2 OUT
 


要创建和描述包含过程 aproc 和 bproc 的程序包 APACK,请输入

CREATE PACKAGE apack AS
PROCEDURE aproc(P1 CHAR, P2 NUMBER);
PROCEDURE bproc(P1 CHAR, P2 NUMBER);
END apack;
/
Package created.
 


DESCRIBE apack
PROCEDURE APROC
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P1                             CHAR                    IN
 P2                             NUMBER                  IN
PROCEDURE BPROC
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P1                             CHAR                    IN
 P2                             NUMBER                  IN
 


有关使用 SET DESCRIBE 和 SHOW DESCRIBE 命令的信息,请参阅 SET 和 SHOW 命令。


--------------------------------------------------------------------------------

DISCONNECT
语法

DISC[ONNECT]

提交对数据库的暂挂更改,并从 Oracle 数据库中注销当前用户名,但不退出 iSQL*Plus。

示例

脚本可能以 CONNECT 命令开头并以 DISCONNECT 结束,如下所示。

CONNECT HR
SELECT LAST_NAME, DEPARTMENT_NAME FROM EMP_DETAILS_VIEW;
DISCONNECT
SET INSTANCE FIN2
CONNECT HR2

--------------------------------------------------------------------------------

EXECUTE
语法

EXEC[UTE] statement

其中 statement 代表 PL/SQL 语句。

执行单个 PL/SQL 语句。如果要执行引用存储过程的 PL/SQL 语句,通常会用到 EXECUTE 命令。有关 PL/SQL 的详细信息,请参阅 PL/SQL User's Guide and Reference。

示例

如果已用以下语句定义了变量 :n:

VARIABLE n NUMBER

以下 EXECUTE 命令为绑定变量 n 赋值:

EXECUTE :n := 1
PL/SQL procedure successfully completed.
 


有关如何创建绑定变量的信息,请参阅 VARIABLE 命令。


--------------------------------------------------------------------------------

EXIT
语法

{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT | ROLLBACK]

提交或回退所有暂挂更改,停止处理当前的 iSQL*Plus 脚本并将焦点返回输入区域。没有方法可以访问 iSQL*Plus 中的返回代码。在 iSQL*Plus 中单击“注销”按钮可从 Oracle 数据库中退出。

退出时提交,或 iSQL*Plus 中的处理终止时提交,执行提交时不考虑 SET AUTOCOMMIT 的状态。

示例

以下示例提交所有未提交的事务,并返回上次执行的 SQL 命令或 PL/SQL 块的错误代码:

EXIT SQL.SQLCODE

--------------------------------------------------------------------------------

HELP
语法

HELP | ? [topic]

其中 topic 代表 SQL*Plus 帮助主题,例如 COLUMN。

访问 SQL*Plus 命令行帮助系统。输入 HELP INDEX 或 ? INDEX 可获得主题列表。可以在 http://www.oracle.com/technology/tech/sql_plus/ 上查看 SQL*Plus 资源,还可以在 http://www.oracle.com/technology/documentation/ 上查看 Oracle 数据库文档库。

单击 iSQL*Plus 中的“帮助”图标可以访问 iSQL*Plus 联机帮助。

示例

要查看具有帮助的 SQL*Plus 命令的列表,请输入

HELP INDEX

? INDEX

要查看具有帮助的 SQL*Plus 命令的单个列列表,请输入

HELP TOPICS

--------------------------------------------------------------------------------

LIST
语法

L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST]

列出 SQL 缓冲区的一行或多行。

示例

要列出缓冲区的内容,请输入

LIST
或者输入

;
1 SELECT LAST_NAME, DEPARTMENT_ID, JOB_ID
2 FROM EMP_DETAILS_VIEW
3 WHERE JOB_ID = 'SH_CLERK'
4* ORDER BY DEPARTMENT_ID
 


星号指示第 4 行是当前行。

要只列出第 2 行,请输入

LIST 2
此时,将显示第 2 行:

2* FROM EMP_DETAILS_VIEW
 

 

--------------------------------------------------------------------------------

PAUSE
语法

PAU[SE] [text]

其中 text 代表要显示的文本。

显示“下一页”按钮,用户必须单击此按钮才能继续操作。


--------------------------------------------------------------------------------

PRINT
语法

PRI[NT] [variable ...]

其中 variable ... 代表想要显示其值的绑定变量的名称。

显示绑定变量的当前值。有关绑定变量的详细信息,请参阅 PL/SQL User's Guide and Reference。

示例

以下示例说明了 PRINT 命令的用法:

VARIABLE n NUMBER
BEGIN
:n := 1;
END;
/
PL/SQL procedure successfully completed.
 


PRINT n
N
----------
1
 

 

--------------------------------------------------------------------------------

PROMPT
语法

PRO[MPT] [text]

其中 text 代表要显示的消息文本。

向用户屏幕发送指定的消息或空行。如果省略 text,PROMPT 会在用户屏幕上显示空行。

示例

以下示例显示在脚本 ASKFORDEPT.SQL 中将 PROMPT 与 ACCEPT 结合使用。ASKFORDEPT.SQL 包含以下 SQL*Plus 和 SQL 命令:

PROMPT
PROMPT Please enter a valid department
PROMPT For example:  10
SELECT DEPARTMENT_NAME FROM EMP_DETAILS_VIEW
WHERE DEPARTMENT_ID = &NEWDEPT
假定您使用 START 或 @ 运行该文件:

@ASKFORDEPT.SQL VAL1
@HTTP://machine_name.domain:port/ASKFORDEPT.SQL VAL1
Please enter a valid department
For example: 10
Department ID?>
 


可以在 Department ID?> 提示符下输入部门号码。默认情况下,SQL*Plus 会在替换前后列出包含 &NEWDEPT 的行,然后显示与 Department ID?> 提示符下输入的号码对应的部门名称。可以使用 SET VERIFY OFF 禁止该行为。


--------------------------------------------------------------------------------

RECOVER
语法

RECOVER {general | managed | BEGIN BACKUP | END BACKUP}

其中 general 子句使用以下语法:

[AUTOMATIC] [FROM location]

{ {full_database_recovery | partial_database_recovery | LOGFILE filename}

[ {TEST | ALLOW integer CORRUPTION | parallel_clause } [TEST | ALLOW integer CORRUPTION | parallel_clause ]...]

| CONTINUE [DEFAULT] | CANCEL}

其中 full_database_recovery 子句使用以下语法:

[STANDBY] DATABASE

[ {UNTIL {CANCEL | TIME date | CHANGE integer} | USING BACKUP CONTROLFILE}

[UNTIL {CANCEL | TIME date | CHANGE integer} | USING BACKUP CONTROLFILE]...]

其中 partial_database_recovery 子句使用以下语法:

{TABLESPACE tablespace [, tablespace]...

| DATAFILE {filename | filenumber} [, filename | filenumber]...

| STANDBY {TABLESPACE tablespace [, tablespace]...

| DATAFILE {filename | filenumber} [, filename | filenumber]...}

UNTIL [CONSISTENT WITH] CONTROLFILE}

其中 parallel 子句使用以下语法:

{ NOPARALLEL | PARALLEL [ integer] }

其中 managed 子句使用以下语法:

MANAGED STANDBY DATABASE recover_clause | cancel_clause | finish_clause

其中 recover_clause 使用以下语法:

{ { DISCONNECT [ FROM SESSION ] | { TIMEOUT integer | NOTIMEOUT} }

| { NODELAY | DEFAULT DELAY | DELAY integer } | NEXT integer

| { EXPIRE integer | NO EXPIRE } | parallel_clause

| USING CURRENT LOGFILE | UNTIL CHANGE integer

| THROUGH { [ THREAD integer ] SEQUENCE integer

| ALL ARCHIVELOG | { ALL | LAST | NEXT } SWITCHOVER} }

[ DISCONNECT [ FROM SESSION ] | { TIMEOUT integer | NOTIMEOUT}

| { NODELAY | DEFAULT DELAY | DELAY integer } | NEXT integer

| { EXPIRE integer | NO EXPIRE } | parallel_clause

| USING CURRENT LOGFILE | UNTIL CHANGE integer

| THROUGH { [ THREAD integer ] SEQUENCE integer

| ALL ARCHIVELOG | { ALL | LAST | NEXT } SWITCHOVER} ] ...

其中 cancel_clause 使用以下语法:

CANCEL [IMMEDIATE] [WAIT | NOWAIT]

其中 finish_clause 使用以下语法:

[ DISCONNECT [ FROM SESSION ] ] [ parallel_clause]

FINISH [ SKIP [ STANDBY LOGFILE ] ] [ WAIT | NOWAIT]

其中 parallel_clause 使用以下语法:

{ NOPARALLEL | PARALLEL [ integer] }

对一个或多个表空间、一个或多个数据文件或整个数据库执行介质恢复。有关 RECOVER 命令的详细信息,请参阅 Oracle Database Administrator's Guide、Oracle Database SQL Reference 中的 ALTER DATABASE RECOVER 命令以及 Oracle Database Backup and Recovery Basics 指南。

必须将 AUTORECOVERY 设置为 ON 才能在 iSQL*Plus 中使用 RECOVER 命令。

由于可能会出现网络超时,因此建议您对于长时间运行的 DBA 操作 (例如 RECOVER) 使用 SQL*Plus 命令行,而不要使用 iSQL*Plus。

示例

要恢复整个数据库,请输入

RECOVER DATABASE

要将数据库恢复到指定时间之前的状态,请输入

RECOVER DATABASE UNTIL TIME 01-JAN-2001:04:32:00

要恢复数据库中的两个表空间 ts_one 和 ts_two,请输入

RECOVER TABLESPACE ts_one, ts_two

要恢复数据库中的数据文件 data1.db,请输入

RECOVER DATAFILE 'data1.db'

--------------------------------------------------------------------------------

REMARK
语法

REM[ARK]

在脚本中开始输入注释。 iSQL*Plus 不会将注释解释为命令。

示例

以下脚本包含一些典型的注释:

REM COMPUTE uses BREAK ON REPORT to break on end of table
BREAK ON REPORT
COMPUTE SUM OF "DEPARTMENT 10" "DEPARTMENT 20" -
"DEPARTMENT 30" "TOTAL BY JOB_ID" ON REPORT
REM Each column displays the sums of salaries by job for
REM one of the departments 10, 20, 30.
SELECT JOB_ID,
SUM(DECODE( DEPARTMENT_ID, 10, SALARY, 0)) "DEPARTMENT 10",
SUM(DECODE( DEPARTMENT_ID, 20, SALARY, 0)) "DEPARTMENT 20",
SUM(DECODE( DEPARTMENT_ID, 30, SALARY, 0)) "DEPARTMENT 30",
SUM(SALARY) "TOTAL BY JOB_ID"
FROM EMP_DETAILS_VIEW
GROUP BY JOB_ID;

--------------------------------------------------------------------------------

REPFOOTER
语法

REPF[OOTER] [PAGE] [printspec [text | variable] ...] | [ON | OFF]

其中,printspec 代表以下一个或多个用于放置文本并设置格式的子句:

COL n

S[KIP] [n]

TAB n

LE[FT]

CE[NTER]

R[IGHT]

BOLD

FORMAT text

在每个报告的底部放置指定的报告页脚并设置其格式,也可以列出当前的 REPFOOTER 定义。

示例

要在单独一页上将“END EMPLOYEE LISTING REPORT”定义为报告页脚并使其居中,请输入:

REPFOOTER PAGE CENTER 'END EMPLOYEE LISTING REPORT'
TTITLE RIGHT 'Page: ' FORMAT 999 SQL.PNO
SELECT LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE SALARY > 12000;
LAST_NAME                     SALARY
------------------------- ----------
King                           24000
Kochhar                        17000
De Haan                        17000
Russell                        14000
Partners                       13500
Hartstein                      13000
                          ----------
sum                            98500

                                                                      Page:  2
                           END EMPLOYEE LISTING REPORT

6 rows selected.
 


要禁止显示报告页脚而不更改其定义,请输入

REPFOOTER OFF

--------------------------------------------------------------------------------

REPHEADER
语法

REPH[EADER] [PAGE] [printspec [text | variable] ...] | [ON | OFF]

其中,printspec 代表以下一个或多个用于放置文本并设置格式的子句:

COL n

S[KIP] [n]

TAB n

LE[FT]

CE[NTER]

R[IGHT]

BOLD

FORMAT text

在每个报告的顶部放置指定的报告页眉并设置其格式,也可以列出当前的 REPHEADER 定义。

示例

要在单独一页上将“EMPLOYEE LISTING REPORT”定义为报告页眉并使其居中,请输入:

REPHEADER PAGE CENTER 'EMPLOYEE LISTING REPORT'
TTITLE RIGHT 'Page: ' FORMAT 999 SQL.PNO
SELECT LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE SALARY > 12000;
                                                                 Page:   1
                             EMPLOYEE LISTING REPORT
                                                                 Page:   2
LAST_NAME                     SALARY
------------------------- ----------
King                           24000
Kochhar                        17000
De Haan                        17000
Russell                        14000
Partners                       13500
Hartstein                      13000
                          ----------
sum                            98500

6 rows selected.
 


要禁止显示报告页眉而不更改其定义,请输入

REPHEADER OFF

--------------------------------------------------------------------------------

RUN
语法

R[UN]

列出并执行当前存储在 SQL 缓冲区中的 SQL 命令或 PL/SQL 块。

示例

假定 SQL 缓冲区包含以下脚本:

SELECT DEPARTMENT_ID
FROM EMP_DETAILS_VIEW
WHERE SALARY>12000

要运行 (RUN) 该脚本,请输入

RUN
  1  SELECT DEPARTMENT_ID
  2  FROM EMP_DETAILS_VIEW
  3 WHERE SALARY>12000

DEPARTMENT_ID
-------------
           90
           90
           90
           80
           80
           20

6 rows selected.
 

 

--------------------------------------------------------------------------------

SET
设置一个系统变量以更改当前会话的 SQL*Plus 环境设置,例如,可以:

自定义 HTML 格式

启用或禁用列标题的打印

设置每页的行数

设置数据的显示宽度

还可以使用 iSQL*Plus 中的“首选项”屏幕来设置系统变量。

语法

SET system_variable value

其中 system_variable 和 value 代表下面的“SET 命令语法”表中显示的一个子句。


--------------------------------------------------------------------------------

SET 命令语法

--------------------------------------------------------------------------------

SET APPI[NFO]{ON | OFF | text}
设置通过 DBMS_APPLICATION_INFO 程序包自动注册脚本。

示例

要显示 APPINFO 的值 (默认情况下为 SET OFF),请输入

SET APPINFO ON
SHOW APPINFO
APPINFO is ON and set to "SQL*Plus"
 


要更改默认文本,请输入

SET APPINFO 'This is SQL*Plus'
要确保已进行了注册,请输入

VARIABLE MOD VARCHAR2(50)
VARIABLE ACT VARCHAR2(40)
EXECUTE DBMS_APPLICATION_INFO.READ_MODULE(:MOD, :ACT);
PL/SQL procedure successfully completed.
 


PRINT MOD
MOD
---------------------------------------------------
This is SQL*Plus
 


要将 APPINFO 更改回默认值,请输入

SET APPINFO OFF

--------------------------------------------------------------------------------

SET ARRAY[SIZE] {15 | n}
设置 SQL*Plus 一次可以从数据库中提取的行数。


--------------------------------------------------------------------------------

SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n}
控制在执行 SQL 或 PL/SQL 命令之后,Oracle 数据库何时将暂挂更改提交到数据库。

当 SQL*Plus 退出时,SET AUTOCOMMIT 不会改变提交行为。默认情况下会提交任何未提交的数据。


--------------------------------------------------------------------------------

SET AUTOP[RINT] {ON | OFF}
设置自动打印绑定变量。


--------------------------------------------------------------------------------

SET AUTORECOVERY [ON | OFF]
设置为 ON 时,RECOVER 命令在恢复期间将自动应用所需的归档重做日志文件的默认文件名。

必须将 AUTORECOVERY 设置为 ON 才能在 iSQL*Plus 中使用 RECOVER 命令。

示例

要将恢复模式设置为 AUTOMATIC,请输入

SET AUTORECOVERY ON
RECOVER DATABASE

--------------------------------------------------------------------------------

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
在成功执行 SQL DML 语句 (SELECT、INSERT、UPDATE 或 DELETE) 后显示一个报告。


--------------------------------------------------------------------------------

SET BLO[CKTERMINATOR] {. | c | ON | OFF}
将用来终止 PL/SQL 块的字符设置为 c。


--------------------------------------------------------------------------------

SET CMDS[EP] {; | c | ON | OFF}
将用来分隔一行中输入的多个 SQL*Plus 命令的非字母数字字符设置为 c。

示例

要在同一行使用 TTITLE 指定标题并使用 COLUMN 设置列的格式,请输入

SET CMDSEP +
TTITLE LEFT 'SALARIES' + COLUMN SALARY FORMAT $99,999
SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW
WHERE JOB_ID = 'SH_CLERK';
SALARIES
LAST_NAME                   SALARY
------------------------- --------
Taylor                      $3,200
Fleaur                      $3,100
Sullivan                    $2,500
Geoni                       $2,800
Sarchand                    $4,200
Bull                        $4,100
Dellinger                   $3,400
Cabrio                      $3,000
Chung                       $3,800
Dilly                       $3,600
Gates                       $2,900
Perkins                     $2,500
Bell                        $4,000
Everett                     $3,900
McCain                      $3,200
Jones                       $2,800

SALARIES
LAST_NAME                   SALARY
------------------------- --------
Walsh                       $3,100
Feeney                      $3,000
OConnell                    $2,600
Grant                       $2,600

20 rows selected.
 

 

--------------------------------------------------------------------------------

SET COLSEP { | text}
设置打印在输出中的 各列之间的列分隔字符。

只有当“预设格式的输出”为“启用”(SET MARKUP HTML PREFORMAT) 时,才会在 iSQL*Plus 中使用列分隔符 (SET COLSEP)。

示例

要将列分隔符设置为“|”,请输入

SET MARKUP HTML PREFORMAT ON
SET COLSEP '|'
SELECT LAST_NAME, JOB_ID, DEPARTMENT_ID
FROM EMP_DETAILS_VIEW
WHERE DEPARTMENT_ID = 20;
LAST_NAME                |JOB_ID    |DEPARTMENT_ID
-------------------------|----------|-------------
Hartstein                |MK_MAN    |           20
Fay                      |MK_REP    |           20
 

 

--------------------------------------------------------------------------------

SET CON[CAT] {. | c | ON | OFF}
设置用来终止替代变量引用的字符,SQL*Plus 不会将该字符后的那个字符解释为变量名的一部分。


--------------------------------------------------------------------------------

SET COPYC[OMMIT] {0 | n}
控制 COPY 命令提交对数据库的更改之前的行数。


--------------------------------------------------------------------------------

SET COPYTYPECHECK {ON | OFF}
设置在使用 COPY 命令插入或附加到表时,禁止比较数据类型。


--------------------------------------------------------------------------------

SET DEF[INE] {& | c | ON | OFF}
将用来作为替代变量前缀的字符设置为 c。


--------------------------------------------------------------------------------

SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}]
设置可以递归地描述某个对象的层次深度。

示例

要创建对象类型 ADDRESS,请输入

CREATE TYPE ADDRESS AS OBJECT
  ( STREET  VARCHAR2(20),
    CITY    VARCHAR2(20)
  );
/
Type created
 


要创建包含 ADDRESS 类型的嵌套对象 (EMPADDR) 的表 EMPLOYEE,请输入

CREATE TABLE EMPLOYEE
  (LAST_NAME VARCHAR2(30),
   EMPADDR ADDRESS,
   JOB_ID VARCHAR2(20),
   SALARY NUMBER(7,2)
  );
/
Table created
 


要以两层深度描述表 EMPLOYEE、缩进输出并显示行号,请输入:

SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON
DESCRIBE employee
       Name                            Null?    Type
       ------------------------------- -------- --------------------------
1      LAST_NAME                                VARCHAR2(30)
2      EMPADDR                                  ADDRESS
3    2   STREET                                 VARCHAR2(20)
4    2   CITY                                   VARCHAR2(20)
5      JOB_ID                                   VARCHAR2(20)
6      SALARY                                   NUMBER(7,2)
 

 

--------------------------------------------------------------------------------

SET ECHO {ON | OFF}
控制是否回显脚本中使用 @、@@ 或 START 执行的命令。值为 ON 时屏幕上将显示命令。值为 OFF 禁止显示。ECHO 命令并不影响您交互输入的命令的显示,也不会从操作系统重定向到 iSQL*Plus。


--------------------------------------------------------------------------------

SET EMB[EDDED] {ON | OFF}
控制页面上每个报告开始的位置。


--------------------------------------------------------------------------------

SET ESC[APE] {/ | c | ON | OFF}
定义用作转义符的字符。

示例

如果将转义符定义为感叹号 (!),则输入

SET ESCAPE !
ACCEPT v1 PROMPT 'Enter !&1:'
显示以下提示:

Enter &1:
 


要将转义符重置为默认值 / (反斜杠),请输入

SET ESCAPE ON

--------------------------------------------------------------------------------

SET FEED[BACK] {6 | n | ON | OFF}
显示当脚本选择了至少 n 个记录时,脚本所返回的记录数。


--------------------------------------------------------------------------------

SET FLAGGER {OFF | ENTRY | INTERMED[IATE] | FULL}
检查以确保 SQL 语句遵循 ANSI/ISO SQL92 标准。


--------------------------------------------------------------------------------

SET HEA[DING] {ON | OFF}
控制报告中列标题的打印。

示例

要禁止显示报告中的列标题,请输入

SET HEADING OFF
如果随后运行 SQL SELECT 命令

SELECT LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE JOB_ID = 'AC_MGR';
则输出以下结果:

Higgins 12000
 


要重新启用列标题的显示,请输入

SET HEADING ON

--------------------------------------------------------------------------------

SET HEADS[EP] { | | c | ON | OFF}
定义在列标题中用作换行符的字符。

只有当“预设格式的输出”首选项设置为“启用”(SET MARKUP HTML PREFORMAT) 时,iSQL*Plus 中才支持标题分隔符字符 (SET HEADSEP)。


--------------------------------------------------------------------------------

SET INSTANCE [instance_path | LOCAL]
将会话的默认实例更改为指定的实例路径。

示例

要将默认例程设置为“PROD1”,请输入

DISCONNECT
SET INSTANCE PROD1

要将此例程重置为默认值 local,请输入

SET INSTANCE local

要更改此例程,必须断开与任何已连接例程的连接。


--------------------------------------------------------------------------------

SET LIN[ESIZE] {150 | n}
设置在开始一个新行之前,iSQL*Plus 在一行上显示的字符总数。


--------------------------------------------------------------------------------

SET LOBOF[FSET] {1 | n}
设置检索和显示 CLOB 和 NCLOB 数据的开始位置。

示例

要将检索 CLOB 列数据的开始位置设置为第 22 个字符位置,请输入

SET LOBOFFSET 22

CLOB 数据将在屏幕上换行;SQL*Plus 直到第 23 个字符时才截断数据。


--------------------------------------------------------------------------------

SET LOGSOURCE [pathname]
指定恢复过程中检索归档日志的位置。

示例

要将日志文件的默认恢复位置设置为目录“/usr/oracle10/dbs/arch”,请输入

SET LOGSOURCE "/usr/oracle10/dbs/arch"
RECOVER DATABASE

--------------------------------------------------------------------------------

SET LONG {80 | n}
设置用于显示 CLOB、LONG、NCLOB 和 XMLType 值的最大宽度 (字节),以及用于复制 LONG 值的最大宽度 (字节)。

示例

要将显示和复制 LONG 值时提取的最大字节数设置为 500,请输入

SET LONG 500
LONG 数据将在屏幕上换行;SQL*Plus 直到第 501 个字节时才截断数据。LONG 的默认长度为 80 个字节。


--------------------------------------------------------------------------------

SET LONGC[HUNKSIZE] {80 | n}
设置 SQL*Plus 用于检索 CLOB、LONG、NCLOB 或 XMLType 值的增量大小 (字节)。

示例

要将 SQL*Plus 检索 LONG 值的增量大小设置为 100 个字节,请输入

SET LONGCHUNKSIZE 100
此时,将以 100 个字节为增量来检索 LONG 数据,直到检索到整个值,或者执行到 SET LONG (取其中较小的值)。


--------------------------------------------------------------------------------

SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]
输出带有 HTML 标记的文本,这是 iSQL*Plus 使用的输出。


--------------------------------------------------------------------------------

SET NULL text
设置每当 SQL SELECT 命令的结果中出现空值时显示的文本。


--------------------------------------------------------------------------------

SET NUMF[ORMAT] format
设置用于显示数字的默认格式。format 是您输入的数字格式。有关格式语法的详细信息,请参阅 COLUMN 命令中的数字格式。请输入

SET NUMFORMAT ""
使用默认的字段宽度和由 SET NUMWIDTH 指定的格式化模块。


--------------------------------------------------------------------------------

SET NUM[WIDTH] {10 | n}
设置用于显示数字的默认宽度。有关格式语法的详细信息,请参阅 COLUMN 命令中的数字格式。

COLUMN FORMAT 设置优先于 SET NUMFORMAT 设置,后者则优先于 SET NUMWIDTH 设置。


--------------------------------------------------------------------------------

SET PAGES[IZE] {14 | n}
设置每一页上显示的行数。错误消息和信息性消息不计入页大小,因此页不会始终是完全同样的长度。iSQL*Plus 的默认页大小为 24。


--------------------------------------------------------------------------------

SET PAU[SE] {ON | OFF | text}
SET PAUSE ON 将显示文本的值,然后暂停输出,并在报告输出的 PAGESIZE 行数后面显示“下一页”按钮。单击“下一页”按钮可以查看更多的报告输出。输出的最后一页没有“下一页”按钮。


--------------------------------------------------------------------------------

SET RECSEP {WR[APPED] | EA[CH] | OFF}
SQL*Plus 通过 RECSEP 来了解对记录进行分隔的位置。

只有当“预设格式的输出”设置为“启用”(SET MARKUP HTML PREFORMAT) 时,iSQL*Plus 中才支持显示记录分隔符字符 (SET RECSEP)。


--------------------------------------------------------------------------------

SET RECSEPCHAR { | c}
定义显示或打印时用于分隔记录的字符。


--------------------------------------------------------------------------------

SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]
控制是否显示 SQL*Plus 中的存储过程或 PL/SQL 块的输出 (即 DBMS_OUTPUT.PUT_LINE)。

示例

要在 PL/SQL 块中使用 DBMS_OUTPUT.PUT_LINE 启用文本显示,请输入

SET SERVEROUTPUT ON
以下示例显示在使用 SET SERVEROUTPUT ON 执行匿名过程时发生的情况:

BEGIN
  DBMS_OUTPUT.PUT_LINE('Task is complete');
END;
/
Task is complete.
PL/SQL procedure successfully completed.
 

 

--------------------------------------------------------------------------------

SET SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}
在即将执行之前转换 SQL 命令和 PL/SQL 块的大小写。


--------------------------------------------------------------------------------

SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}
将行为设置为 x.y[.z] 所指定的发行版或版本的行为。

SQL*Plus 兼容性表
SQL*Plus 兼容性表将受到每个 SQL*Plus 兼容性设置影响的行为列成表格。可以用三种方式来设置 SQL*Plus 兼容模式:

可以在站点或用户概要文件中包含 SET SQLPLUSCOMPATIBILITY 命令。安装时,glogin.sql 中没有 SET SQLPLUSCOMPATIBILITY 设置。因此,默认的兼容性为 10.2。

在启动时,可以使用 SQLPLUS -C[OMPATIBILITY] {x.y[.z]} 命令参数来设置该会话的兼容模式。

在会话期间可以使用 SET SQLPLUSCOMPATIBILITY {x.y[.z]} 命令来设置该会话所需的 SQL*Plus 行为。

下表显示引入了行为更改的 SQL*Plus 发行版本,因此它是获得该行为的最低 SQLPLUSCOMPATIBILITY 值。例如,要获得 VARIABLE 命令的早期行为,必须使用早于 9.0.1 的 SQL*Plus 版本,或者必须使用小于 9.0.1 的 SQLPLUSCOMPATIBILITY 值。可以设置的最低 SQLPLUSCOMPATIBILITY 值是 7.3.4。

兼容性表

值  结果  适用条件 
>=10.1  SHOW ERRORS 使用只在 Oracle 数据库 10g 中可用的新列对 PL/SQL 错误消息进行排序。  10.1 
>=10.1  添加了 SPOOL 选项 CREATE、REPLACE、SAVE,这可能影响在某些平台上的文件名语法解析。  10.1 
>=10.1  SET SQLPROMPT  10.1 
>=10.1  包含在引号中的 Windows 文件名允许使用空格字符。目前 Windows 不允许使用某些其它特殊标点符号字符。  10.1 
>=10.1  每次重新连接将调用 Glogin/login 文件。  10.1 
  <10.1  回显 /* 注释时使用已弃用的 DOC> 提示符。  10.1 
>= 9.2  定义了 FOLD_AFTE 的宽列可能显示在新行的开头。否则,它将以比期望宽度窄一些的宽度错误地放在上一行的末尾。  9.2. 
>= 9.0  忽略 SQL 语句中斜杠 (“/”) 前面的空格,而且采用斜杠表示执行该语句。否则将斜杠视为语句的组成部分 (例如作为分隔符)。  9.0.1.4. 
>= 9.0  为 NCHAR 和 NVARCHAR2 类型指定的长度为字符数。否则,长度可能表示字节数或字符数 (取决于字符集)。  9.0.1 

 

--------------------------------------------------------------------------------

SET SQLT[ERMINATOR] {; | c | ON | OFF}
设置用于结束 PL/SQL 块或 SQL 语句的脚本或数据条目,执行脚本,或将脚本载入缓冲区的字符。


--------------------------------------------------------------------------------

SET TIMI[NG] {ON | OFF}
控制计时统计信息的显示。


--------------------------------------------------------------------------------

SET UND[ERLINE] {- | c | ON | OFF}
设置在报告中为列标题加下划线的字符。下划线字符不能为字母数字字符或空格。ON 或 OFF 选项分别启用或禁用加下划线功能。ON 选项会将 c 的值改回默认值“-”。

只有在设置 SET MARKUP HTML PREFORMAT ON 之后,iSQL*Plus 中才支持 SET UNDERLINE。


--------------------------------------------------------------------------------

SET VER[IFY] {ON | OFF}
控制在使用值来取代替代变量的前后,是否列出 SQL 语句或 PL/SQL 命令的文本。ON 将列出文本;OFF 则不列出文本。


--------------------------------------------------------------------------------

SET WRA[P] {ON | OFF}
控制当所选行超出当前行宽度时,是否截断所选行的显示。OFF 将截断所选行;ON 则允许所选行换行显示。

使用 COLUMN 命令的 WRAPPED 和 TRUNCATED 子句可以覆盖特定列的 WRAP 设置。

只有当“预设格式的输出”设置为“启用”(SET MARKUP HTML PREFORMAT) 时,iSQL*Plus 才支持“换行”首选项 (SET WRAP)。


--------------------------------------------------------------------------------

SET XQUERY BASEURI {text}
指定在函数中解析相对 URI 的基础 URI。它启用要更改的 XQuery 所访问的文件的前缀。

请小心输入有效的值,因为不会对 XQUERY BASEURI 值执行系统验证。

示例

SET XQUERY BASEURI '/public/scott'
xquery for $i in doc("foo.xml") return $i
/
它被解析为:

select column_Value from xmltable('declare base-uri "/public/scott"; for $i in doc("foo.xml") return $i ') ;

--------------------------------------------------------------------------------

SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT}
设置 XQuery 的输出的排序方式。有三个值:

UNORDERED 指定将结果按从数据库检索它们时的顺序进行排序。

ORDERED 指定按 XQuery 的定义对结果进行排序。

DEFAULT 指定使用数据库默认值 UNORDERED。

示例

SET XQUERY ORDERING ORDERED
xquery for $i in doc("foo.xml") return $i
/
它被解析为:

select column_value from xmltable('declare ordering ordered; for $i in doc("foo.xml") return $i ');

--------------------------------------------------------------------------------

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT}
设置节点标识保留模式。保留模式应用于创建新节点 (例如,元素构造器) 或者返回一个包含节点的项或序列 (例如,路径表达式) 的所有表达式。有三个值:

BYVALUE 指定不需要保留节点标识。这意味着任何节点操作 (例如,创建操作或作为表达式的结果返回的操作) 都将被深层复制,并丢失它在其所在原始树中的上下文。因此,对该节点的后续操作 (测试节点标识、父兄关系或排序方式) 都将是未定义的。

BYREFERENCE 指定保留节点标识,因此对该节点的后续操作将保留节点的上下文和定义。

DEFAULT 指定数据库使用默认值 BYVALUE。

示例

SET XQUERY NODE BYREFERENCE
xquery for $i in doc("foo.xml") return $i
/
它被解析为:

select column_value from xmltable('declare node byreference; for $i in doc("foo.xml") return $i ');

--------------------------------------------------------------------------------

SET XQUERY CONTEXT {text}
指定 XQuery 上下文项表达式。上下文项表达式代表上下文项,它可能是节点 (比如在以下表达式中:fn:doc("bib.xml")//book[fn:count(./author)>1]) 或原子值 (比如在以下表达式中:(1 到 100)[. mod 5 eq 0])。

请小心输入有效的值,因为不会对 XQUERY CONTEXT 值执行系统验证。

示例

SET XQUERY CONTEXT 'doc("foo.xml")'
xquery for $i in /a return $i
/
它被解析为:

select column_value from xmltable('for $i in /a return $i' passing XMLQuery("doc('foo.xml')"));

--------------------------------------------------------------------------------

SHOW
语法

SHO[W] option

其中 option 代表以下项或子句之一:

system_variableALL

BTI[TLE]

ERR[ORS] [ { FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER | VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS } [schema.]name]

LNO

PARAMETERS [parameter_name]

PNO

RECYC[LEBIN] [original_name]

REL[EASE]

REPF[OOTER]

REPH[EADER]

SGA

SQLCODE

TTI[TLE]

USER

XQUERY

显示 SQL*Plus 系统变量的值或当前的 SQL*Plus 环境。SHOW SGA 要求以具有 DBA 权限的身份登录。

示例

要显示有关 SGA 的信息,请输入

SHOW SGA
Total System Global Area                            7629732 bytes
Fixed Size                                            60324 bytes
Variable Size                                       6627328 bytes
Database Buffers                                     409600 bytes
Redo Buffers                                         532480 bytes
 


以下示例说明如何创建存储过程并随后显示其编译错误:

CONNECT SYSTEM/MANAGER
CREATE PROCEDURE HR.PROC1 AS
BEGIN
:P1 := 1;
END;
/
Warning: Procedure created with compilation errors.
 


SHOW ERRORS PROCEDURE PROC1
NO ERRORS.
 


SHOW ERRORS PROCEDURE HR.PROC1
Errors for PROCEDURE HR PROC1:
LINE/COL ERROR
--------------------------------------------------------
3/3      PLS-00049: bad bind variable 'P1'
 


要显示可以用 FLASHBACK 命令还原的对象 (其中 CJ1 和 ABC 是已删除的对象),请输入:

SHOW RECYCLEBIN
ORIGINAL NAME     RECYCLEBIN NAME       OBJECT TYPE     DROP TIME
--------------    ------------------    ------------    --------------------
CJ1               RB$$29458$TABLE$0     TABLE           2003-01-22:14:54:07
ABC               RB$$29453$TABLE$0     TABLE           2003-01-20:18:50:29
 


要还原 CJ1,请输入

FLASHBACK TABLE CJ1 TO BEFORE DROP;

--------------------------------------------------------------------------------

SHUTDOWN
语法

SHUTDOWN [ABORT | IMMEDIATE | NORMAL | TRANSACTIONAL [LOCAL]]

关闭当前运行的 Oracle 数据库例程,同时还可以关闭和卸载数据库。

示例

要以正常方式关闭数据库,请输入

SHUTDOWN
Database closed.
Database dismounted.
Oracle instance shut down.
 

 

--------------------------------------------------------------------------------

START
语法

STA[RT] {url[.ext] } [arg...]

调用并运行由 Web 服务器的 URL 指定的脚本。

示例

文件名为 PROMOTE 且扩展名为 SQL 的文件 (用于提升员工) 可能包含以下命令:

SELECT FIRST_NAME, LAST_NAME, JOB_ID, SALARYFROM EMP_DETAILS_VIEWWHERE JOB_ID='&1' AND SALARY>&2;
要运行此脚本,请输入

START PROMOTE ST_MAN 7000
或者,如果该文件位于 Web 服务器上,则用以下格式输入命令:

START HTTP://machine_name.domain:port/PROMOTE.SQL ST_MAN 7000
其中,必须用脚本所在的 Web 服务器所使用的 host.domain 名称替换 machine_name.domain、而用端口号替换 port。

将执行以下命令:

SELECT LAST_NAME, LAST_NAME
FROM EMP_DETAILS_VIEW
WHERE JOB_ID='ST_MAN' AND SALARY>7000;
并显示结果。


--------------------------------------------------------------------------------

STARTUP
语法

STARTUP options | upgrade_options

其中,options 使用以下语法:

[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] | [ OPEN [open_options] [dbname] ] | NOMOUNT]

其中 open_options 使用以下语法:

READ {ONLY | WRITE [RECOVER]} | RECOVER

其中 upgrade_options 使用以下语法:

[PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]

使用多个选项启动 Oracle 数据库例程,同时装载和打开数据库。

示例

要使用标准参数文件启动一个例程,装载默认数据库并打开该数据库,请输入

STARTUP
或者输入

STARTUP OPEN database
要使用标准参数文件启动一个例程,装载默认数据库并打开该数据库,请输入

STARTUP FORCE RESTRICT MOUNT
要使用参数文件 TESTPARM 启动一个例程而不装载该数据库,请输入

STARTUP PFILE=testparm NOMOUNT
要关闭某个特定数据库、立即重新启动并打开该数据库、只允许拥有 RESTRICTED SESSION 权限的用户访问它,并使用参数文件 MYINIT.ORA,请输入

STARTUP FORCE RESTRICT PFILE=myinit.ora OPEN database

--------------------------------------------------------------------------------

TIMING
语法

TIMI[NG] [START text | SHOW | STOP]

记录过去一段时间的计时数据,列出当前计时器名称和计时数据,或者列出当前活动计时器的数量。

示例

要创建名为 SQL_TIMER 的计时器,请输入

TIMING START SQL_TIMER
要列出当前计时器的标题和累计时间,请输入

TIMING SHOW
要列出当前计时器的标题和累计时间并移去该计时器,请输入

TIMING STOP

--------------------------------------------------------------------------------

TTITLE
语法

TTI[TLE] [printspec [text | variable] ...] [ON | OFF]

其中,printspec 代表以下一个或多个用于放置文本并设置格式的子句:

BOLD

CE[NTER]

COL n

FORMAT text

LE[FT]

R[IGHT]

S[KIP] [n]

TAB n

在每页报告的顶部放置指定的标题并设置其格式。输入无子句的 TTITLE 将列出它的当前定义。仅当 TTITLE 命令后面引号内是单个单词或字符串,才使用旧格式的 TTITLE。

示例

要将“Monthly Analysis”定义为顶部标题并且左对齐,将日期居中,将三位格式的页码右对齐,以及在下一行居中显示“Data in Thousands”,请输入

TTITLE LEFT 'Monthly Analysis' CENTER '01 Jan 2003' -
RIGHT 'Page:' FORMAT 999 SQL.PNO SKIP CENTER -
'Data in Thousands'
Monthly Analysis                01 Jan 2003                      Page: 1
                              Data in Thousands
 


要禁止显示顶部标题而不更改其定义,请输入

TTITLE OFF

--------------------------------------------------------------------------------

UNDEFINE
语法

UNDEF[INE] variable ...

其中 variable 代表要删除的替代变量的名称。

删除一个或多个显式 (使用 DEFINE 命令) 或隐式 (使用 START 命令的一个参数) 定义的替代变量。

示例

要取消替代变量 POS 的定义,请输入

UNDEFINE POS
要取消两个名为 MYVAR1 和 MYVAR2 的替代变量的定义,请输入

UNDEFINE MYVAR1 MYVAR2

--------------------------------------------------------------------------------

VARIABLE
语法

VAR[IABLE] [variable [type] ]

其中 type 代表以下类型之一:

NUMBER

CHAR

CHAR (n [CHAR | BYTE])

NCHAR

NCHAR (n)

VARCHAR2 (n [CHAR | BYTE])

NVARCHAR2 (n)

CLOB

NCLOB

REFCURSOR

BINARY_FLOAT

BINARY_DOUBLE

声明一个可以在 PL/SQL 中引用的绑定变量。

要释放 CLOB 和 NCLOB 绑定变量使用的资源,可能需要使用以下命令手动释放临时 LOB:

EXECUTE DBMS_LOB.FREETEMPORARY(:cv)
示例

以下示例显示了如何创建绑定变量,更改变量值,以及显示当前值。

要创建绑定变量,可输入:

VARIABLE ret_val NUMBER

要在 SQL*Plus 中更改此绑定变量,必须使用 PL/SQL 块:

BEGIN
 :ret_val:=4;
END;
/
PL/SQL procedure successfully completed.
 


要在 SQL*Plus 中显示绑定变量的值,可输入:

PRINT ret_val
   RET_VAL
----------
         4
 


以下示例说明如何创建绑定变量,然后将其设置为某个函数返回的值。

VARIABLE id NUMBER
BEGIN
  :id := EMP_MANAGEMENT.HIRE
  ('BLAKE','MANAGER','KING',2990,'SALES');
END;
/

存储过程返回的值放到绑定变量 :id 中。可以使用 PRINT 命令显示,或者用于后面的 PL/SQL 子程序。

以下示例说明如何自动显示一个绑定变量:

SET AUTOPRINT ON
VARIABLE a REFCURSOR
BEGIN
  OPEN :a FOR SELECT LAST_NAME, CITY, DEPARTMENT_ID
  FROM EMP_DETAILS_VIEW
  WHERE SALARY > 12000
  ORDER BY DEPARTMENT_ID;
END;
/
PL/SQL procedure successfully completed.
LAST_NAME                  CITY                            DEPARTMENT_ID
-------------------------  ------------------------------  -------------
Hartstein                  Toronto                                    20
Russell                    Oxford                                     80
Partners                   Oxford                                     80
King                       Seattle                                    90
Kochhar                    Seattle                                    90
De Haan                    Seattle                                    90

6 rows selected.
 


在上面的示例中,要显示该变量,并不需要执行 PRINT 命令。


--------------------------------------------------------------------------------

WHENEVER OSERROR
语法

WHENEVER OSERROR {EXIT [SUCCESS | FAILURE | n | variable | :BindVariable] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}

如果发生操作系统错误,则执行指定的操作 (默认操作为停止当前的脚本) 并将焦点返回到工作区。

示例

以下脚本中的命令导致 iSQL*Plus 停止处理当前脚本,并将焦点返回到工作区上的“输入”区域:

WHENEVER OSERROR EXIT
START no_such_file

--------------------------------------------------------------------------------

WHENEVER SQLERROR
语法

WHENEVER SQLERROR {EXIT [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}

如果 SQL 命令或 PL/SQL 块出现错误,则执行指定的操作 (默认操作为停止当前的脚本) 并将焦点返回到工作区。

示例

如果 SQL UPDATE 命令失败,以下脚本中的命令将导致 iSQL*Plus 停止处理当前脚本,并将焦点返回到工作区上的“输入”区域:

WHENEVER SQLERROR EXIT SQL.SQLCODE
UPDATE EMP_DETAILS_VIEW SET SALARY = SALARY*1.1;
以下示例显示,在 SQL*Plus 命令出现错误后不执行 WHENEVER SQLERROR 命令,而在 SQL 命令或 PL/SQL 块出现错误后执行该命令:

WHENEVER SQLERROR EXIT SQL.SQLCODE
column LAST_name headIing "Employee Name"
Unknown COLUMN option "headiing"

SHOW non_existed_option
 

 

--------------------------------------------------------------------------------

XQUERY
语法

XQUERY xquery_statement

SQL*Plus XQUERY 命令使您能够对指定的数据库执行 XQuery 1.0 查询。在 Oracle 数据库 10g (发行版 2) 和更高版本中支持 XQUERY。如果尝试在较早的 Oracle 数据库版本中使用 XQUERY,将出现错误:

SP2-614 服务器版本太低

另请参阅 SET XQUERY 命令:

SET XQUERY BASEURI {text},

SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT}

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT}

SET XQUERY CONTEXT {text}

示例

以下脚本中的 XQuery 语句查询 HR 方案的 EMP_DETAILS_VIEW 视图:

set long 160
set linesize 160
xquery for $i in ora:view("EMP_DETAILS_VIEW") return $i
/
Result Sequence
-------------------------------------------------------------------------------------------
<ROW><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME><JOB>CLERK</JOB><MGR>7902</MGR><HIREDATE>17-
DEC-80</HIREDATE><SAL>800</SAL><DEPTNO>20</DEPTNO></ROW>

14 item(s) selected.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值