彻底理解SQLPlus系统变量Word格式.docx
- 文档编号:7191000
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:29
- 大小:25.91KB
彻底理解SQLPlus系统变量Word格式.docx
《彻底理解SQLPlus系统变量Word格式.docx》由会员分享,可在线阅读,更多相关《彻底理解SQLPlus系统变量Word格式.docx(29页珍藏版)》请在冰点文库上搜索。
假设ARRAYSIZE设为5,而某条SQL查询将返回100行数据,则SQL*Plus需分20次才能从服务器获取到所有的数据行。
如下所示:
创建一个具有100行数据的表,并设置ARRAYSIZE为5:
setautotraceon---使SQL*Plus显示统计信息
createtablet_tempasselect*fromall_objectswhererownum<
101;
setarraysize5
查询表中所有行
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次)。
setarraysize100修改ARRAYSIZE为100
显示统计信息如下:
7consistentgets
13262bytessentviaSQL*Nettoclient
503bytesreceivedviaSQL*Netfromclient
2SQL*Netroundtripsto/fromclient
再参看统计信息中的“SQL*Netroundtripsto/fromclient”这一行,说明SQL*Plus只需1次就可以从服务器获取到所有数据行(加上发起查询的一次共2次)。
3.AUTO[COMMIT]{OFF|ON|IMM[EDIATE]|n}
控制何时提交对数据库的修改。
禁止自动提交,因此我们必须执行COMMIT来手工提交改变。
每执行成功一个INSERT、UPDATE、DELETE语句或PL/SQL块后自动提交。
[IMMEDIATE]:
同ON。
[n]:
每执行成功n个INSERT、UPDATE、DELETE语句或PL/SQL块后自动提交。
4.AUTOP[RINT]{OFF|ON}
控制SQL*Plus是否自动显示绑定变量的值。
默认为OFF。
variablev_datechar(10)
setautoprinton
下面PL/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语句后显示一个跟踪报表。
报表可包括一些关于执行情况的统计信息和执行计划。
不显示跟踪报表。
显示跟踪报表。
设为ON或TRACEONLY隐含包括了EXPLAIN和STATISTICS选项。
[TRACEONLY]:
显示跟踪报表但不显示查询结果。
[EXPLAIN]:
显示查询执行路径。
[STATISTICS]:
显示SQL语句统计信息。
setautotracetraceonly
select*fromscott.dept;
ExecutionPlan
----------------------------------------------------------
0SELECTSTATEMENTOptimizer=CHOOSE
10TABLEACCESS(FULL)OF'
DEPT'
Statistics
2dbblockgets
2consistentgets
604bytessentviaSQL*Nettoclient
4rowsprocessed
7.BLO[CKTERMINATOR]{OFF|ON|c}
设置用于结束输入PL/SQL块的字符。
此字符不能是数字字符。
默认结束字符为“.”。
禁用结束字符。
启用结束字符,并重置结束字符为“.”。
[c]:
启用结束字符,并指定结束字符为所设置的字符。
修改结束字符为“!
”
setblockterminator!
2insertinto;
3!
---输入!
后,块输入结束
setblockterminatoroff
后,块输入不会结束
4!
5
8.CMDS[EP]{c|OFF|ON}
控制是否允许在一行中输入多个SQL*Plus命令。
如果为ON则还可以设置多个SQL*Plus命令之间的分隔符,默认的分隔符为“;
”。
禁止在一行中输入多个SQL*Plus命令。
允许在一行中输入多个SQL*Plus命令,并设置分隔符为“;
允许在一行中输入多个SQL*Plus命令,并指定分隔符为所设置的字符。
setcmdsepon
columne_nameheadingEmployeeName;
columndept_nameheadingDepartName
setcmdsepoff
SP2-0158:
未知的COLUMN选项"
dept_name"
9.COLSEP{text}
设置SELECT语句返回的各列之间显示的分隔符。
默认是一个空格。
setcolsep||
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表中的数据。
definev=scott.de
select*from&
v;
---这条语句肯定会出错,因为不存在表SCOTT.DE
原值1:
v
新值1:
select*fromscott.de
select*fromscott.de
*
ERROR位于第1行:
ORA-00942:
表或视图不存在
v.pt;
---注意&
v与pt之间有个句点
v.pt
select*fromscott.dept
DEPTNODNAME
------------------------
10a"
ccounting
20RESEARCH
30s<
ales>
40OPERATIONS
12.COPYC[OMMIT]{n}
设置SQL*Plus的COPPY命令在复制多少行数据后进行提交。
默认值为0,表示在整个复制操作完成后再提交。
n的取值范围为0至5000。
13.COPYTYPECHECK{OFF|ON}
启用或禁用在使用COPY命令插入或附加数据到表中时是否比较数据类型。
默认为ON。
14.DEF[INE]{c|OFF|ON}
设置置换变量的前缀字符。
不扫描置换变量,不替换置换变量的值。
此设置会覆盖系统变量SCAN的设置。
扫描并替换置换变量的值。
设为ON后会自动把置换变量前缀改为“&
设置置换变量的前缀字符为指定字符。
setdefine#
defineaa=scott.dept
select*from#aa;
---将把此处的置换变量#aa替换为scott.dept
select*from#aa
DEPTNODNAMELOC
-------------------------------------
10ACCOUNTINGNEWYORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
setdefineoff---禁止扫描替换变量
---此处的#aa不再作为置换变量,因此将会出错
select*from#aa
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。
createtypeaddressasobject
2(streetvarchar2(20),
3cityvarchar2(20)
4);
5/
类型已创建。
createtypeemployeeasobject
2(last_namevarchar2(30),
3empaddraddress,
4salarynumber(7,2)
5);
6/
注意比较下面两条descemployee命令的输出有什么不同。
descemployee
名称是否为空?
类型
-----------------------------------------------------------------------------
LAST_NAMEVARCHAR2(30)
EMPADDRADDRESS
SALARYNUMBER(7,2)
setdescdepth2
STREETVARCHAR2(20)
CITYVARCHAR2(20)
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编码。
[HEADtext]:
设置在最终生成的HTML中,位于“<
HEAD>
<
/HEAD>
”标签内的文本。
[BODYtext]:
BODY>
”标签中的文本。
[TABLEtext]:
TABLE>
[ENTMAPON|OFF]:
设为ON表示对查询结果中存在的一些特殊字符进行映射,比如把“>
”和“<
”映射为“&
gt;
”和“&
lt;
”,以便能在HTML中正确显示。
[SPOOLON|OFF]:
ON表示生成格式完整的HTML文件,包括<
HTML>
、<
等标签。
[PREFORMATON|OFF]:
ON表示把查询结果按原格式放在HTML标签“<
PRE>
”中,OFF表示格式化查询结果为一个HTML中的“<
setmarkuphtmlonhead"
title>
Thisispagetitle.<
/title>
"
body"
style='
b
ackground:
red'
spoolon
SQL&
spooljs2008.html
br>
spooloff
执行成功后请参见最终生成的js2008.html的源代码。
17.ECHO{OFF|ON}
控制在执行命令文件时是否列出其中的每个命令。
18.EDITF[ILE]file_name[.ext]
设置EDIT命令使用的缺省文件名。
也可以包含路径和扩展名。
默认为“afiedt.buf”。
edit---将打开afiedt.buf文件进行编辑
seteditfilejs2008.sql
edit---将打开js2008.sql文件进行编辑
19.EMB[EDDED]{OFF|ON}
在一个新页的顶部开始打印报表。
紧跟着上一个报表的末尾开始打印报表。
20.ESC[APE]{c|OFF|ON}
定义转义字符。
取消转义字符定义。
启用转义字符。
并把转义字符重置为“\”。
设置转义字符为指定字符。
definev=scott.dept---定义置换变量
setescapeon
select*from\&
---&
已被转义,所以这条语句出错
SP2-0552:
未说明结合变量”V”
21.FEED[BACK]{n|OFF|ON}
设置是否显示一个查询返回的记录数。
不显示查询返回的记录数。
显示查询返回的记录数,并把n设为1。
当一个查询至少选择了n行时显示返回的记录数。
设为0时同OFF。
22.FLAGGER{OFF|ENTRY|INTERMED[IATE]|FULL}
检查SQL语句是否符合ANSI/ISOSQL92标准。
如果不符合则无法执行并返回错误。
同SQL语句“ALTERSESSIONSETFLAGGER”等价。
ENTRY、INTERMEDIATE、FULL分别表示ANSI/ISOSQL92的三个结构层次。
beginnull;
end;
2/
setflaggerentry
beginnull;
*
ORA-00097:
使用OracleSQL特性不在SQL92Entry级中
因为PL/SQL块是Oracle特有的,并不包含在SQL92标准中,所以无法正确执行。
23.FLU[SH]{OFF|ON}
控制什么时候输出被发送到用户的显示设备。
默认值为ON。
允许操作系统缓冲输出。
尽当执行一个非交互式的命令文件时才使用此值。
禁止操作系统缓冲输出。
24.HEA[DING]{OFF|ON}
设置是否显示列标题。
25.HEADS[EP]{c|OFF|ON}
定义标题分隔符。
此字符不能是数字字符或空格字符。
可以在COLUMN命令或BTITLE和TTITLE命令中使用此字符使列标题或者报表标题显示为多行。
当设为OFF时,把标题分隔符显示为普通字符。
设为ON时将重置为默认的“|”字符。
setheadsep+
columndnameheading'
D+NAME'
D
DEPTNONAMELOC
ccountingnewYOrK
CHICAGO
setheadsepoff
select*fromdept;
DEPTNOD+NAMELOC
26.INSTAN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 彻底 理解 SQLPlus 系统 变量