§2.5.6 PAUSE(暂停) 可以设置 PAUSE 为ON 或OFF来控制屏幕显示。当设置为ON 时,在select 语句发出后需要按Enter键才能显示一屏。 SET PAUSE [ ON | OFF ] SQL> setpause on
提示:在发出select 语句并按Enter键后还要再按Enter键才能显示结果.
§2.5.7 SPACE(列间空格) 可用 set space 来设置各列间的空格数,语法为: SET SPA[CE] {1|n} N为设置输出行列间的空格数,最大为10。 SQL>set space 2
建议:在一般情况下,不用设置space参数。
§2.5.8 Termout (启/停屏幕显示) TERMOUT用于设置在屏幕上显示或不显示所输出的信息。 SET TERMOUT { ON | OFF }
set termout off set termout on
set termout off 常用SPOOL XXX时,即关闭报表在屏幕上的显示(节省时间) set termout on 常用SPOOL off之后,即恢复报表在屏幕上的显示
§2.5.9 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;
§2.5.10 TRANSACTION (启动事务) 一个很重要的事务环境设置是TRANSACTION。它包括两个部分的内容: SET TRANSACTION { READ ONLY | USE ROLLBACK SEGMENT segment_name } READ ONLY是用于保证读的一致性。即其他用户的修改不影响当前查询结果。 USE ROLLBACK SEGMENT segment_name是为当前所处理的事务指定专门的回滚段。这主要是在进行大量的Insert或Delete或Update时,需要一个大的回滚段以保证事务正常完成。详细见数据库管理员。
§2.5.11 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> 你可以从上面的参数中看到其当前值,也可以修改某些参数的值。 格式化输出 §2.6.1 一般数据的格式化输出
1.系统日期 sysdate 的显示 用sysdate 可以显示ORACLE RDBMS 所在机器的日期及时间,如: SQL> alter session set nls_date_format ='"公元"yyyy"年"mm"月"dd"日"';
会话已更改。
SQL> select sysdate from dual;
SYSDATE ------------------ 公元2001年05月30日
2.日期类型的显示
select sysdate,to_char(sysdate,’yyyy.mm.dd hh24:mi;ss’) from dual;
SQL> connect scott/tiger 已连接。 SQL> alter session set nls_date_format ='yyyy"年"mm"月"dd"日生"';
会话已更改。 SQL> col HIREDATE heading生日 SQL> col sal heading工资 SQL> col sal ename姓名 SQL> select ename,sal,hiredate from emp;
姓名 工资 生日 ---------- ---------- ----------------- SMITH 800 1980年12月17日生 ALLEN 1600 1981年02月20日生 WARD 1250 1981年02月22日生 JONES 2975 1981年04月02日生 MARTIN 1250 1981年09月28日生 BLAKE 2850 1981年05月01日生 CLARK 2450 1981年06月09日生 SCOTT 3000 1987年04月19日生 KING 5000 1981年11月17日生 TURNER 1500 1981年09月08日生 ADAMS 1100 1987年05月23日生 JAMES 950 1981年12月03日生 FORD 3000 1981年12月03日生 MILLER 1300 1982年01月23日生
2. COLUMN 命令 column col_name[,heading] format format_spe 把字段的结果指定为一种输出格式 COL name heading '姓名' for a10 COL sal heading '工资' for 9,999.99
3.ttitle、btitle
ttitle [center|left|right]string 顶标题 btitle [center|left|right]string 底标题 ttitle center 'XX公司人员情况表' btitle left '制表人:赵元杰' right '日期:1998.11月' Clear ttitle
4.break、compute
clear breaks,clear computes break on column 在该列上中断 break on row 在每一行上中断 break on Page break on report skip n 跳过n行 skip page 跳过未用完的页 compute avg compute count compute max compute min compute std compute sum compute var compute num 计算所有行 compute sum of sal on deptno
5.set 在报表中的设置 l set termout off、set termout on命令 l set termout off 常用SPOOL XXX前,即关闭报表在屏幕上的显示(节省时间) l set termout on 常用SPOOL off之后,即恢复报表在屏幕上的显示 l set ECHO{OFF|ON} 显示执行当中的各命令(即用start 时),set echo 受到 set termout 的影响 l set Lin[esize]{80|integer} 设置行宽度,最大值999 l set pag[esize] {24|integer} 设置页的大小
例子: SQL>COL ename heading ‘姓名’ for a12 SQL>COL sal heading ‘工资’ for a999,999.99 SQL>COL hiredate heading ‘出生’ SQL>SET LINESIZE 200 SQL>SET PAGESIZE 60 SQL>SPOOL c:\all_emp SQL>select ename,sal,deptno,hiredate from emp order by deptno; SQL>SPOOL OFF
SQL> set define ? SQL> select sid,serial#,username from v$session where username='?usr'; 输入 usr 的值: SYS 原值 1: select sid,serial#,username from v$session where username='?usr' 新值 1: select sid,serial#,username from v$session where username='SYS'