格式化输出结果
在select语句中,如果某个变量前面有&符号,表示该变量是一个替换变量,在执行select时,系统会提示用户为该变量提供一个具体的值
SQL> select *
2 from scott.dept
3 where deptno = &v_dept
4 ;
Enter value for v_dept: 20
old 3: where deptno = &v_dept
new 3: where deptno = 20
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
替换变量是字符型或者日期型数据时,输入值必须用打引号括起来
SQL> select * from scott.dept
2 where dname=&v_dname;
Enter value for v_dname: RESEARCH
old 2: where dname=&v_dname
new 2: where dname=RESEARCH
where dname=RESEARCH
*
ERROR at line 2:
ORA-00904: "RESEARCH": invalid identifier
SQL> select * from scott.dept
2 where dname='&v_dname';
Enter value for v_dname: RESEARCH
old 2: where dname='&v_dname'
new 2: where dname='RESEARCH'
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
替换变量可以出现的位置:
Where子句
列表达式
表明
select语句
SQL> select deptno,&dname,loc
2 from scott.dept;
Enter value for dname: dname
old 1: select deptno,&dname,loc
new 1: select deptno,dname,loc
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select *
2 from &v_table;
Enter value for v_table: scott.dept
old 2: from &v_table
new 2: from scott.dept
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from scott.dept
2 order by &v_col
3 ;
Enter value for v_col: deptno
old 2: order by &v_col
new 2: order by deptno
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
如果希望重新使用某个变量并且不希望重新提示输入该值,使用&&替换变量
为避免为同一个变量提供两个不同的值,且使系统为同一个变量值提示一次信息,使用&&替换变量
SQL> select deptno,&&dname ,loc
2 from scott.dept
3 order by &dname;
Enter value for dname: dname
old 1: select deptno,&&dname ,loc
new 1: select deptno,dname ,loc
old 3: order by &dname
new 3: order by dname
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
20 RESEARCH DALLAS
30 SALES CHICAGO
定制SQL*Plus 环境
1、页和行的大小
set linesize 80 指定页宽
set pagesize 30 指定页的长度
2、页头标
TTITLE '修高等数学课程|学生成绩报表‘
默认设置为:标题文本在行中央,每页上都有日期和页号,若需要两行头标,需要使用(|)字符。
SQL> select * from scott.dept;
Mon Nov 12 page 1
Department Detail
ALL
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
3、页脚标
该命令在每页的底部指定一些信息,建议用户将程序名放在这里
btitle '-report 1.sql -' right
定位关键字:left居左,right居右,没有,则将文本之余底行中央
SQL> ttitle 'Department Detail|ALL'
SQL> btitle '-report dept report -' right
SQL> select * from scott.dept;
Mon Nov 12 page 1
Department Detail
ALL
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
-report dept report -
行级别编辑:
运用change命令
SQL> desc scott.dept;
Name Null? Type
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL> select deptno ,dname from scott.dept;
DEPTNO DNAME
---------- --------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
SQL> change /dname/dname,loc
1* select deptno ,dname,loc from scott.dept
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
C[hange]separator_character old_text [separator_character new_text]
后面的隔离字符可以是任何非字母或数字的字符。在隔离字符之后,指定将要替代的原来文本。如果在这里停止该命令并按下enter键,原来的文本将会被删除,而没有任何内容取代它。如果要插入一些内容代替原来的文本,只要再次输入隔离字符,后面再输入取代原来文本的新文本即可。
在行级别编辑中控制编辑的行
为了使change命令修改多行语句,需要在进行任何实际更改之前指定处理行
SQL> select deptno,
2 dname,
3 lo
4 from scott.dept;
lo
*
ERROR at line 3:
ORA-00904: "LO": invalid identifier
SQL> 3
3* lo
SQL> c /lo/loc
3* loc
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
格式化数字
数字处理一般包括三个方面
对齐小数位
将数字按每三位一节插入分组符
插入货币符号
1、排列小数位
column column_name format format_code
notice:
column命令影响指定的所有列,而不管该列位于那个表中
format code:数字显示效果表达式,该表达式由“9”组成,每个9表示数字需要的每个位数,在小数位还有一个"."
column salary format 9999.99
2、添加分组符
分组符是将数字按照每三位一节分离的字符,用逗号将数字分节
column salary format 999,99
SQL> col sal for 999,99.99
SQL> select empno,sal from scott.emp;
EMPNO SAL
---------- ----------
7369 8,00.00
7499 16,00.00
7521 12,50.00
7566 29,75.00
7654 12,50.00
7698 28,50.00
7782 24,50.00
7788 30,00.00
7839 50,00.00
7844 15,00.00
7876 11,00.00
EMPNO SAL
---------- ----------
7900 9,50.00
7902 30,00.00
7934 13,00.00
14 rows selected.
3、插入货币符号
column salary format $9999.99
SQL> col sal for $99,999.99
SQL> select empno,sal from scott.emp;
EMPNO SAL
---------- -----------
7369 $800.00
7499 $1,600.00
7521 $1,250.00
7566 $2,975.00
7654 $1,250.00
7698 $2,850.00
7782 $2,450.00
7788 $3,000.00
7839 $5,000.00
7844 $1,500.00
7876 $1,100.00
EMPNO SAL
---------- -----------
7900 $950.00
7902 $3,000.00
7934 $1,300.00
14 rows selected.
将长文本换行
column column_name format Ann word_wrap
其中column_name为要换行的列,nn换行列的宽度应是多少字符,A表示字母数
column email format a10 word_wrap