【网学网提醒】:网学会员,鉴于大家对sqlplus使用技巧集锦(下)十分关注,会员在此为大家搜集整理了“sqlplus使用技巧集锦(下)”一文,供大家参考学习!
(3)define
该命令用于定义类型为char的替代变量,而且该命令的定义的替代变量只在当前sql*plus环境中起作用。
当使用该命令定义变量时,如果变量值包含空格或区分大小写,则用引号引注。另外,使用”define变量名”可以检查变量
是否已经定义。eg:
sql>setverifyoff
sql>definetitle=CLERK
sql>selectename,salfromwherejob=’&;title’;
(4)accept
该命令可以用于定义char,number和date类型的替代变量。与define命令相比,accept命令更加灵活。当使用该命令定义替代
变量时,还可以指定变量输入提示、变量输入格式、隐藏输入内容。
eg1:指定变量输入提示
SQL>accepttitleprompt‘请输入岗位:’
请输入岗位:CLERK
SQL>selectename,salfromempwherejob=’&;title’;
原值1:selectename,salfromempwherejob=’&;title’
新值1:selectename,salfromempwherejob=’CLERK’ENAMESAL
———-———-
SMITH800
ADAMS1100
JAMES950
MILLER1300
eg2:隐藏用户输入
sql>acceptpwdhide
(5)undefine
该命令用于清除替代变量的定义。eg:
sql>undefinepwd
SQL>disc
从OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OLAPandDataMiningoptions断开
SQL>connscott/&;pwd
输入pwd的值:yhai1981
已连接
(6)prompt的pause
prompt命令用于输出提示信息,而pause命令则用于暂停脚本执行。在sql脚本中结合使用这两条命令,可以控制sql脚本
的暂停的执行。假定在a.sql脚本中包含以下命令:
prompt‘按
键继续’
pause
当运行该sql脚本时,会暂停执行,eg:
sql>@c:\a.sql
‘按键继续’
(7)variable
该命令用于在sql*plus中定义绑定变量。当在sql语句或pl/sql块中引用绑定变量时,必须要在绑定变量前加冒号(;
当直接给绑定变量赋值时,需要使用execute命令(类似于调用存储过程).示例如下:
sql>varnonumber
sql>exec:no:=7788
sql>selectenamefromempwhereempno=:no;
ename
——————
scott
(8)print
该命令用于输出绑定变量结果,eg:
SQL>printno
NO
———-
7788
7.显示和设置环境变量
使用sql*plus的环境变量可以控制其运行环境,例如设置行显示宽度,设置每页显示的行数、
设置自动提交标记、设置自动跟踪等等。使用show命令可以显示当前sql*plus的环境变量设置
:使用set命令可以修改当前sql*plus的环境变量设置。下面介绍常用的sql*plus环境变量。
(1)显示所有环境变量
为了显示sql*plus的所有环境变量,必须要使用showall命令。示例如下:
SQL>showall
appinfo为OFF并且已设置为“SQL*Plus”
arraysize15
autocommitOFF
autoprintOFF
autorecoveryOFF
autotraceOFF
blockterminator“.”(hex2e)
btitleOFF为下一条SELECT语句的前几个字符
cmdsepOFF
colsep””
compatibilityve
rsionNATIVE
concat“.”(hex2e)
copycommit0
COPYTYPECHECK为ON
define“&;”(hex26)
describeDEPTH1LINENUMOFFINDENTON
echoOFF
editfile“afiedt.buf”
embeddedOFF
escapeOFF
用于6或更多行的FEEDBACKON
以下是引用片段:
flaggerOFF
flushON
headingON
headsep“|”(hex7c)
instance“local”
linesize80
lno4
loboffset1
logsource“”
long80
longchunksize80
SPOOLOFFENTMAPONPREFORMATOFF
newpage1
null“”
numformat“”
numwidth10
pagesize14
PAUSE为OFF
pno1
recsepWRAP
recsepchar””(hex20)
release1002000100
repfooterOFF为NULL
repheaderOFF为NULL
serveroutputOFF
shiftinoutINVISIBLE
showmodeOFF
spoolON
sqlblanklinesOFF
sqlcaseMIXED
sqlcode0
sqlcontinue“>”
sqlnumberON
sqlpluscompatibility10.2.0
sqlprefix“#”(hex23)
sqlprompt“SQL>”
sqlterminator“;”(hex3b)
suffix“sql”
tabON
termoutON
timingOFF
trimoutON
trimspoolOFF
ttitleOFF为下一条SELECT语句的前几个字符
underline“-”(hex2d)
USER为“SCOTT”
verifyON
wrap:将换至下一行
SQL>spooloff
(2)arraysize
该环境变量用于指定数组提取尺寸,其默认值为15.该值越大,网络开销将会越低,但占用内存会增加。假定使用默认值,
如果查询返回行数为50行,则需要通过网络传送4将数据;如果设置为25,则网络传送次数只有两次。eg:
SQL>showarraysize
arraysize15
SQL>setarraysize25
(3)autocommit
该环境变量用于设置是否自动提交dml语句,其默认值为off(表示禁止自动提交)。当设置为ON时,每次执行DML
语句都会自动提交。eg:
以下是引用片段:
SQL>showautocommit
autocommitOFF
SQL>setautocommiton
SQL>showautocommit
autocommitIMMEDIATE
(4)colsep
该环境变量用于设置列之间的分隔符,默认分隔符为空格。如果要使用其它分隔符,则使用set命令进行设置。eg:
sql>setcolsep|
SQL>selectename,salfromempwhereempno=7788
ENAME|SAL
———-|———-
SCOTT|3000
(5)feedback
该环境变量用于指定显示反馈行数信息的最低行数,其默认值为6。如果要禁止显示行数反馈信息,则将feedback
设置为off。假设只要有查询结果就返回行数,那么可以将该环境变量设置为1.eg:
sql>setfeedback1
sql>selectename,salfromempwhereempno=7788;
ENAME|SAL
———-|———-
SCOTT|3000
已选择1行。
(6)heading
该环境变量用于设置是否显示标题,其默认值为on。如果不显示列标题,则设置为off。eg:
sql>setheadingoff
sql>selectename,salfromempwhereempno=7788
SCOTT|3000
(7)linesize
该环境变量用于设置行宽度,默认值为80。在默认情况下,如果数据长度超过80个字符,那么在sql*plus中会折
行显示数据结果。要在一行中显示
全部数据,应该设置更大的值。eg:
(8)pagesize
该环境变量用于设置每页所显示的行数,默认值为14
setpagesize0;//输出每页行数,缺省为24,为了避免分页,可设定为0。
(9)long
该环境变量用于设置long和lob类型列的显示长度。默认值为80,也就是说当查询long或lob列时,只会显示该列的前80个字符,
应该设置更大的值。eg:
sql>showlong
long80
sql>setlong300
(10)serveroutput
该环境变量用于控制服务器输出,其默认值为off,表示禁止服务器输出。在默认情况下,当调用dbms_output包时,
不会在sql*plus屏幕上显示输出结果。在调用dbms_output包时,为了在屏幕上输出结果,必须要将serveroutput设置
为on。eg:
以下是引用片段:
sql>setserveroutputon
sql>execdbms_output.put_line(’hello’)
(11)termout
该环境变量用于控制sql脚本的输出,其默认值为ON。当使用默认值时,如果sql脚本有输出结果,则会在屏幕上输出
显示结果,如果设置为OFF,则不会在屏幕上输出sql脚本。eg:
SQL>settermoutoff
SQL>@c:\a
(12)time
该环境变量用于设置在sql提示符前是否显示系统时间,默认值为off,表示禁止显示系统时间。如果设置为on,
则在sql提示符前会显示系统时间.eg:
SQL>settimeon
12:09:59SQL>
(13)timing
该环境变量用于设置是否要显示sql语句执行时间,默认值为off,表示不会显示sql语句执行时间。如果设置为
ON,则会显示sql语句执行时间。eg:
sql>settimingon
SQL>selectcount(*)fromemp;
COUNT(*)
———-
14
已选择1行。
已用时间:00:00:00.03
(14)trimspool
以下是引用片段:
settrimouton;//去除标准输出每行的拖尾空格,缺省为off
settrimspoolon;//去除重定向(spool)输出每行的拖尾空格,缺省为off
如果trimspool设置为on,将移除spool文件中的尾部空格,trimout同trimspool功能相似,只不过对象是控制台。
以下是引用片段:
Iftrimspoolissettoon,itwillremovetrailingblanksinspooledfiles.
Seealsotrimoutwhichdoesthesamethingtotheoutputtotheconsole(terminal).
eg:
settrimspooloff
spoolc:\temp\trimspool.txt
declare
v_namevarchar2(30);
begin
SELECTtable_nameintov_name
FROMall_tables
WHERErownum=1;
dbms_output.put_line(v_name);
end;
/
settrimspoolon
declare
v_namevarchar2(30);
begin
SELECTtable_nameintov_name
FROMall_tables
WHERErownum=1;
dbms_output.put_line(v_name);
end;
/
spooloff