一般在SQL>下进行SQLPLUS 操作,都需要进行必要的环境设置才能完成我们所需要的输出。所有环境的设置由 SET命令加相应的环境变量来完成。下面是常用的环境设置:
ARRAYSIZE(取回的行数)
SET ARRAY[SIZE]{integer}
一次可以提取(Fetch)的行的数目,1->5000,当有较长字段时应设小些。
AUTOCOMMIT(自动提交)
SET AUTO [COMMIT] { [ OFF | ON | IMM | n] }
用于在操作中是自动提交或是部分提交或是不自动提交。
1) 或IMM使得在完成每条SQL语句时将未提交的改变立刻提交给数据库系统。
ON
2) 允许在用户发出COMMIT后,可以执行命令的数量(将n条SQL语句所做的改变进行提交)。
N
3) 停止自动提交,用户必须用COMMIT命令才能被提交。
OFF
LINESIZE(行显示宽度)
可以设置
LINESIZE
环境变量来控制行的显示宽度,缺省是
80
个字符。
SET Lin[esize]{80|integer}
Integer =
设置行宽度(字符个数),最大值999,如:
SQL>set linesize 160
LONG(长类型显示字节数)
在缺省的SQL> 状态下,SQL>缓冲区用于显示LONG 的字节数只有80个字符。如果我们需要查询的列中含有 LONG类型的字段的话,就需要将LONG缓冲区设置大些。
SET LONG{80|integer}
Integer
是 显示或拷贝long值的最大宽度, n=1->32767(但必须小于Maxdata值)
SQL>show Maxdata
(最大行宽)
SQL>set long 2000
NUMVIDTH(number类型显示字节数)
在缺省的SQL> 状态下,SQL>缓冲区用于显示number的字节数为10个字符。如果我们需要查询的列中含有 NUMBER类型的字段的话,可以适当调整numvidth的大小。
SET NUMVIDTH{10|integer}
SQL>set numvidth 4
PAGESIZE(页行数)
在缺省的SQL> 状态下,SQL>缓冲区显示页的行数是24行,其中22行显示数据,2行显示标题和横线。我们将pagesize 设置大些以减少提示标题和横线。
SET pag[esize] {24|integer}
SQL>SET pagesize 66
PAUSE(暂停)
可以设置 PAUSE 为ON 或OFF来控制屏幕显示。当设置为ON 时,在select 语句发出后需要按Enter键才能显示一屏。
SET PAUSE [ ON | OFF ]
SQL> set pause on
提示:在发出select 语句并按Enter键后 还要再按Enter键才能显示结果
.
SPACE(列间空格)
可用 set space 来设置各列间的空格数,语法为:
SET SPA[CE] {1|n}
N
为设置输出行列间的空格数,最大为10。
SQL>set space 2
建议:在一般情况下,不用设置space参数。
Termout (启/停屏幕显示)
TERMOUT
用于设置在屏幕上显示或不显示所输出的信息。
SET TERMOUT { ON | OFF }
set termout off
set termout on
set termout off 常用SPOOL XXX时,即关闭报表在屏幕上的显示(节省时间)
set termout on 常用SPOOL off之后,即恢复报表在屏幕上的显示
ECHO (启/停命令显示)
可以用
ECHO
命令来显示或不显示所执行的
SQL
命令。语法如:
SET ECHO{OFF|ON}
显示执行当中的各命令( 即用start 时)
set echo 受到 set termout 的影响
set pagesize 100
set echo on
select table_name from dict where rownum<20;
select * from cat where rownum<30;
set echo off
--
下面只显示结果不显示命令:
select table_name from dict where rownum<20;
select * from cat where rownum<30;
TRANSACTION (启动事务)
一个很重要的事务环境设置是
TRANSACTION
。它包括两个部分的内容:
SET TRANSACTION { READ ONLY | USE ROLLBACK SEGMENT segment_name }
READ ONLY
是用于保证读的一致性。即其他用户的修改不影响当前查询结果。
USE ROLLBACK SEGMENT segment_name
是为当前所处理的事务指定专门的回滚段。这主要是在进行大量的
Insert
或
Delete
或
Update
时,需要一个大的回滚段以保证事务正常完成。详细见数据库管理员。
SHOW ALL(列出所有参数)
可以用
SHOW ALL
来显示当前的所有参数情况。它的用法很简单。比如:
SQL> show all
appinfo
为
ON
并且已设置为
"SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autorecovery OFF
autotrace OFF
blockterminator "." (hex 2e)
btitle OFF and
为下一条
SELECT
语句的前几个字符
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
copycommit 0
COPYTYPECHECK
为
ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT ON
markup HTML OFF SPOOL OFF ENTMAP ON PREFORMAT OFF
echo OFF
editfile "afiedt.buf"
embedded OFF
escape OFF
flagger OFF
flush ON
heading ON
headsep "|" (hex 7c)
instance "local"
linesize 80
lno 14
loboffset 1
logsource ""
long 80
longchunksize 80
newpage 1
null ""
numformat ""
numwidth 10
pagesize 14
PAUSE
为
OFF
pno 0
recsep WRAP
recsepchar " " (hex 20)
release 801070000
repfooter OFF and
为
NULL
repheader OFF and
为
NULL
serveroutput OFF
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
time OFF
timing OFF
trimout ON
trimspool OFF
ttitle OFF and
为下一条
SELECT
语句的前几个字符
underline "-" (hex 2d)
USER
为
"SYS"
verify ON
wrap :
行将为已换行
SQL>
你可以从上面的参数中看到其当前值,也可以修改某些参数的值。
一些常用设置:
set echo on/off 是否显示脚本中的需要执行的命令
set feedback on/off 是否显示结果之后返回多少行的提示
set linesize n 设置一行最多显示多少字符
set timing on/off 显示sql语句执行多长时间
set termout on/off 在执行脚本时是否在屏幕上输出结果,如果 spool 到文件可以将其关闭
set heading on/off 是否显示查询结果的列名
set pagesize n 设置每页的行数
set trimspool on/off 在 spool 到文件时是否去除输出结果中行末尾的空白字符,之前的隔行可以用该参数去掉,和该参数对应的是 trimout,后者用于屏幕输出
set trimout on/off 是否去掉屏幕上输出结果行末尾的空白字符