彻底理解SQLPlus系统变量.docx

上传人:b****8 文档编号:10664683 上传时间:2023-02-22 格式:DOCX 页数:29 大小:25.91KB
下载 相关 举报
彻底理解SQLPlus系统变量.docx_第1页
第1页 / 共29页
彻底理解SQLPlus系统变量.docx_第2页
第2页 / 共29页
彻底理解SQLPlus系统变量.docx_第3页
第3页 / 共29页
彻底理解SQLPlus系统变量.docx_第4页
第4页 / 共29页
彻底理解SQLPlus系统变量.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

彻底理解SQLPlus系统变量.docx

《彻底理解SQLPlus系统变量.docx》由会员分享,可在线阅读,更多相关《彻底理解SQLPlus系统变量.docx(29页珍藏版)》请在冰豆网上搜索。

彻底理解SQLPlus系统变量.docx

彻底理解SQLPlus系统变量

彻底理解SQL*Plus系统变量

1.APPI[NFO]{ON|OFF|text}

启用或禁止通过DBMS_APPLICATION_INFO包自动注册当前会话正在执行的模块(命令文件)的名称,或者手工注册模块名称。

这可以使DBA能够监视每个模块的性能和资源使用情况。

注册的模块的名称保存在V$SESSION视图相应会话的MODULE字段中。

注册名称时实际是调用DBMS_APPLICATION_INFO.SET_MODULE存储过程。

[ON]:

允许自动注册通过@、@@或START调用的命令文件的名称。

[OFF]:

禁止自动注册通过@、@@或START调用的命令文件的名称。

[text]:

用来手工设置当前会话正在执行的模块名称。

示例:

SQL>setappinfoon

SQL>@js2008.sql---模块名将被自动注册

SQL>@jz.sql---模块名将被自动注册

当APPINFO为ON时命令文件的名称是自动被注册的。

可执行下面两条语句分别查看js2008.sql模块和jz.sql模块的执行情况:

SQL>select*fromv$sqlareawheremodulelike'%js2008.sql';

SQL>select*fromv$sqlareawheremodulelike'%jz.sql';

而当APPINFO为OFF时则不会自动注册命令文件的名称,我们可以手工注册。

SQL>setappinfooff

SQL>setappinfojs2008---手工注册模块名

SQL>@js2008.sql

SQL>setappinfojz---手工注册模块名

SQL>@jz.sql

然后执行下面两条语句分别查看js2008.sql模块和jz.sql模块的执行情况:

SQL>select*fromv$sqlareawheremodule='js2008';

SQL>select*fromv$sqlareawheremodule='jz';

2.ARRAY[SIZE]{n}

指示SQL*Plus一次从服务器获取多少行的数据。

n的默认值是15取值范围是1至5000。

当查询返回的数据较多时设置为较大的值可提高效率,但需占用更多的内存。

假设ARRAYSIZE设为5,而某条SQL查询将返回100行数据,则SQL*Plus需分20次才能从服务器获取到所有的数据行。

如下所示:

创建一个具有100行数据的表,并设置ARRAYSIZE为5:

SQL>setautotraceon---使SQL*Plus显示统计信息

SQL>createtablet_tempasselect*fromall_objectswhererownum<101;

SQL>setarraysize5

查询表中所有行

SQL>select*fromt_temp;

显示的统计信息如下:

0recursivecalls

9dbblockgets

26consistentgets

0physicalreads

0redosize

15561bytessentviaSQL*Nettoclient

2992bytesreceivedviaSQL*Netfromclient

21SQL*Netroundtripsto/fromclient

0sorts(memory)

0sorts(disk)

100rowsprocessed

参看统计信息中“SQL*Netroundtripsto/fromclient”这行数据。

它说明了SQL*Plus需分20次从服务器获取所有数据行(加上发起查询的一次共21次)。

SQL>setarraysize100修改ARRAYSIZE为100

SQL>select*fromt_temp;

显示统计信息如下:

0recursivecalls

9dbblockgets

7consistentgets

0physicalreads

0redosize

13262bytessentviaSQL*Nettoclient

503bytesreceivedviaSQL*Netfromclient

2SQL*Netroundtripsto/fromclient

0sorts(memory)

0sorts(disk)

100rowsprocessed

再参看统计信息中的“SQL*Netroundtripsto/fromclient”这一行,说明SQL*Plus只需1次就可以从服务器获取到所有数据行(加上发起查询的一次共2次)。

3.AUTO[COMMIT]{OFF|ON|IMM[EDIATE]|n}

控制何时提交对数据库的修改。

[OFF]:

禁止自动提交,因此我们必须执行COMMIT来手工提交改变。

[ON]:

每执行成功一个INSERT、UPDATE、DELETE语句或PL/SQL块后自动提交。

[IMMEDIATE]:

同ON。

[n]:

每执行成功n个INSERT、UPDATE、DELETE语句或PL/SQL块后自动提交。

4.AUTOP[RINT]{OFF|ON}

控制SQL*Plus是否自动显示绑定变量的值。

默认为OFF。

SQL>variablev_datechar(10)

SQL>setautoprinton

下面PL/SQL执行成功后将自动打印出绑定变量的值。

SQL>begin

2selectto_char(sysdate,'yyyy-mm-dd')into:

v_datefromdual;

3end;

4/

PL/SQL过程已成功完成。

 

V_DATE

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

2007-05-21

5.AUTORECOVERY[ON|OFF]

ON设置RECOVER命令自动应用恢复过程中所需要的归档重做日志文件的默认文件名。

当AUTORECOVERY设为ON时,不需要与用户进行交互,这时所需要的文件必须具有所期望的名称并且位于所期望的位置。

当AUTORECOVERY设为ON时,所使用的文件名来源于初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_FORMAT的值。

要在iSQL*Plus中使用RECOVER命令,必须把AUTORECOVERY设为ON。

如果尝试在AUTORECOVERY为OFF时恢复数据库,将产生以下错误:

SP2-0872:

在iSQL*Plus中必须使用SETAUTORECOVERYON

OFF是默认选项,它需要手工输入文件名或者接受所建议的默认文件名。

SETAUTORECOVERYON

RECOVERDATABASE

6.AUTOT[RACE]{OFF|ON|TRACE[ONLY]}[EXP[LAIN]][STAT[ISTICS]]

控制在成功执行SQLDML语句后显示一个跟踪报表。

报表可包括一些关于执行情况的统计信息和执行计划。

默认为OFF。

[OFF]:

不显示跟踪报表。

[ON]:

显示跟踪报表。

设为ON或TRACEONLY隐含包括了EXPLAIN和STATISTICS选项。

[TRACEONLY]:

显示跟踪报表但不显示查询结果。

[EXPLAIN]:

显示查询执行路径。

[STATISTICS]:

显示SQL语句统计信息。

SQL>setautotracetraceonly

SQL>select*fromscott.dept;

 

ExecutionPlan

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

0SELECTSTATEMENTOptimizer=CHOOSE

10TABLEACCESS(FULL)OF'DEPT'

 

Statistics

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

0recursivecalls

2dbblockgets

2consistentgets

0physicalreads

0redosize

604bytessentviaSQL*Nettoclient

503bytesreceivedviaSQL*Netfromclient

2SQL*Netroundtripsto/fromclient

0sorts(memory)

0sorts(disk)

4rowsprocessed

7.BLO[CKTERMINATOR]{OFF|ON|c}

设置用于结束输入PL/SQL块的字符。

此字符不能是数字字符。

默认结束字符为“.”。

[OFF]:

禁用结束字符。

[ON]:

启用结束字符,并重置结束字符为“.”。

[c]:

启用结束字符,并指定结束字符为所设置的字符。

修改结束字符为“!

SQL>setblockterminator!

SQL>begin

2insertinto;

3!

---输入!

后,块输入结束

SQL>setblockterminatoroff

SQL>begin

2insertinto;

3!

---输入!

后,块输入不会结束

4!

5

8.CMDS[EP]{c|OFF|ON}

控制是否允许在一行中输入多个SQL*Plus命令。

如果为ON则还可以设置多个SQL*Plus命令之间的分隔符,默认的分隔符为“;”。

[OFF]:

禁止在一行中输入多个SQL*Plus命令。

[ON]:

允许在一行中输入多个SQL*Plus命令,并设置分隔符为“;”。

[c]:

允许在一行中输入多个SQL*Plus命令,并指定分隔符为所设置的字符。

SQL>setcmdsepon

SQL>columne_nameheadingEmployeeName;columndept_nameheadingDepartName

SQL>setcmdsepoff

SQL>columne_nameheadingEmployeeName;columndept_nameheadingDepartName

SP2-0158:

未知的COLUMN选项"dept_name"

9.COLSEP{text}

设置SELECT语句返回的各列之间显示的分隔符。

默认是一个空格。

SQL>setcolsep||

SQL>setcolsep‘‘

10.COM[PATIBILITY]{V7|V8|NATIVE}

设置当前连接到的Oracle服务器的版本。

如果连接到Oracle7则设为V7,连接到Oracle8或以后版本则可设为V8,如果希望由数据库服务器来决定则设为NATIVE(如果连接到Oracle9i,COMPATIBILITY默认设为NATIVE)。

另,当连接到Oracle9i时可以把此变量的值设为V7或V8,这允许你执行Oracle7、Oracle8或Oracle8i的SQL语句。

11.CON[CAT]{c|OFF|ON}

设置置换变量和紧跟其后的普通字符的连接符。

这个变量不好解释还是直接看例子吧。

c默认为“.”。

举例,我们要查询SCOTT.DEPT表中的数据。

SQL>definev=scott.de

SQL>select*from&v;---这条语句肯定会出错,因为不存在表SCOTT.DE

原值1:

select*from&v

新值1:

select*fromscott.de

select*fromscott.de

*

ERROR位于第1行:

ORA-00942:

表或视图不存在

 

SQL>select*from&v.pt;---注意&v与pt之间有个句点

原值1:

select*from&v.pt

新值1:

select*fromscott.dept

DEPTNODNAME

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

10a"ccounting

20RESEARCH

30s

40OPERATIONS

12.COPYC[OMMIT]{n}

设置SQL*Plus的COPPY命令在复制多少行数据后进行提交。

默认值为0,表示在整个复制操作完成后再提交。

n的取值范围为0至5000。

13.COPYTYPECHECK{OFF|ON}

启用或禁用在使用COPY命令插入或附加数据到表中时是否比较数据类型。

默认为ON。

14.DEF[INE]{c|OFF|ON}

设置置换变量的前缀字符。

[OFF]:

不扫描置换变量,不替换置换变量的值。

此设置会覆盖系统变量SCAN的设置。

[ON]:

扫描并替换置换变量的值。

设为ON后会自动把置换变量前缀改为“&”。

[c]:

设置置换变量的前缀字符为指定字符。

SQL>setdefine#

SQL>defineaa=scott.dept

SQL>select*from#aa;---将把此处的置换变量#aa替换为scott.dept

原值1:

select*from#aa

新值1:

select*fromscott.dept

DEPTNODNAMELOC

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

10ACCOUNTINGNEWYORK

20RESEARCHDALLAS

30SALESCHICAGO

40OPERATIONSBOSTON

SQL>setdefineoff---禁止扫描替换变量

SQL>select*from#aa;---此处的#aa不再作为置换变量,因此将会出错

select*from#aa

*

ERROR位于第1行:

ORA-00911:

无效字符

15.DESC[RIBE][DEPTH{n|ALL}][LINENUM{ON|OFF}][INDENT{ON|OFF}]

用来控制SQL*Plus的DESCRIBE命令的输出。

[DEPTH]:

设置递归描述一个对象的深度,默认为1。

n的取值范围为1至50。

当设为All时n=50。

[LINENUM]:

控制是否显示行号,默认为OFF。

[INDENT]:

控制是否自动进行缩进,默认为ON。

SQL>createtypeaddressasobject

2(streetvarchar2(20),

3cityvarchar2(20)

4);

5/

类型已创建。

SQL>createtypeemployeeasobject

2(last_namevarchar2(30),

3empaddraddress,

4salarynumber(7,2)

5);

6/

类型已创建。

注意比较下面两条descemployee命令的输出有什么不同。

SQL>descemployee

名称是否为空?

类型

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

LAST_NAMEVARCHAR2(30)

EMPADDRADDRESS

SALARYNUMBER(7,2)

SQL>setdescdepth2

SQL>descemployee

名称是否为空?

类型

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

LAST_NAMEVARCHAR2(30)

EMPADDRADDRESS

STREETVARCHAR2(20)

CITYVARCHAR2(20)

SALARYNUMBER(7,2)

16.MARKUPHTML[ON|OFF][HEADtext][BODYtext][TABLEtext][ENTMAP{ON|OFF}][SPOOL{ON|OFF}][PRE[FORMAT]{ON|OFF}]

控制SQL*Plus以HTML格式输出查询结果。

[HTMLON|OFF]:

允许或禁止SQL*Plus对输出进行HTML编码。

默认为OFF。

[HEADtext]:

设置在最终生成的HTML中,位于“”标签内的文本。

[BODYtext]:

设置在最终生成的HTML中,位于“”标签中的文本。

[TABLEtext]:

设置在最终生成的HTML中,位于“

”标签中的文本。

[ENTMAPON|OFF]:

设为ON表示对查询结果中存在的一些特殊字符进行映射,比如把“>”和“<”映射为“>”和“<”,以便能在HTML中正确显示。

默认为ON。

[SPOOLON|OFF]:

ON表示生成格式完整的HTML文件,包括、、等标签。

默认为OFF。

[PREFORMATON|OFF]:

ON表示把查询结果按原格式放在HTML标签“

”中,OFF表示格式化查询结果为一个HTML中的“
”。

默认为OFF。

SQL>setmarkuphtmlonhead"Thisispagetitle."body"style='b

ackground:

red'"spoolon

SQL>spooljs2008.html


SQL>select*fromscott.dept;


SQL>spooloff

执行成功后请参见最终生成的js2008.html的源代码。

17.ECHO{OFF|ON}

控制在执行命令文件时是否列出其中的每个命令。

18.EDITF[ILE]file_name[.ext]

设置EDIT命令使用的缺省文件名。

也可以包含路径和扩展名。

默认为“afiedt.buf”。

SQL>edit---将打开afiedt.buf文件进行编辑

SQL>seteditfilejs2008.sql

SQL>edit---将打开js2008.sql文件进行编辑

19.EMB[EDDED]{OFF|ON}

[OFF]:

在一个新页的顶部开始打印报表。

[ON]:

紧跟着上一个报表的末尾开始打印报表。

20.ESC[APE]{c|OFF|ON}

定义转义字符。

[OFF]:

取消转义字符定义。

[ON]:

启用转义字符。

并把转义字符重置为“\”。

[c]:

设置转义字符为指定字符。

SQL>definev=scott.dept---定义置换变量

SQL>select*from&v;

原值1:

select*from&v

新值1:

select*fromscott.dept

DEPTNODNAMELOC

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

10ACCOUNTINGNEWYORK

20RESEARCHDALLAS

30SALESCHICAGO

40OPERATIONSBOSTON

SQL>setescapeon

SQL>select*from\&v;---&已被转义,所以这条语句出错

SP2-0552:

未说明结合变量”V”

21.FEED[BACK]{n|OFF|ON}

设置是否显示一个查询返回的记录数。

[OFF]:

不显示查询返回的记录数。

[ON]:

显示查询返回的记录数,并把n设为1。

[n]:

当一个查询至少选择了n行时显示返回的记录数。

设为0时同OFF。

22.FLAGGER{OFF|ENTRY|INTERMED[IATE]|FULL}

检查SQL语句是否符合ANSI/ISOSQL92标准。

如果不符合则无法执行并返回错误。

同SQL语句“ALTERSESSIONSETFLAGGER”等价。

ENTRY、INTERMEDIATE、FULL分别表示ANSI/ISOSQL92的三个结构层次。

SQL>beginnull;end;

2/

PL/SQL过程已成功完成。

SQL>setflaggerentry

SQL>beginnull;end;

2/

beginnull;end;

*

ERROR位于第1行:

ORA-00097:

使用OracleSQL特性不在SQL92Entry级中

因为PL/SQL块是Oracle特有的,并不包含在SQL92标准中,所以无法正确执行。

23.FLU[SH]{OFF|ON}

控制什么时候输出被发送到用户的显示设备。

默认值为ON。

[OFF]:

允许操作系统缓冲输出。

尽当执行一个非交互式的命令文件时才使用此值。

[ON]:

禁止操作系统缓冲输出。

24.HEA[DING]{OFF|ON}

设置是否显示列标题。

默认值为ON。

25.HEADS[EP]{c|OFF|ON}

定义标题分隔符。

此字符不能是数字字符或空格字符。

可以在COLUMN命令或BTITLE和TTITLE命令中使用此字符使列标题或者报表标题显示为多行。

当设为OFF时,把标题分隔符显示为普通字符。

设为ON时将重置为默认的“|”字符。

SQL>setheadsep+

SQL>columndnameheading'D+NAME'

SQL>select*fromscott.dept;

D

DEPTNONAMELOC

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

10a"ccountingnewYOrK

20RESEARCHDALLAS

30sCHICAGO

40OPERATIONSBOSTON

SQL>setheadsepoff

SQL>columndnameheading'D+NAME'

SQL>select*fromdept;

DEPTNOD+NAMELOC

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

10a"ccountingnewYOrK

20RESEARCHDALLAS

30sCHICAGO

40OPERATIONSBOSTON

26.INSTAN

展开阅读全文
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1