格式化sqlplus

格式化输出结果

在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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值