SQL*Plus常见命令

本文介绍了SQL*Plus中的一些高级特性,包括spool命令的使用、格式化输出、自动跟踪设置、数组大小调整等。此外还探讨了替换变量与绑定变量的区别及使用技巧。

spool和屏幕显示

spool /home/oracle/out.txt

创建文件,并将执行结果输出到文件。屏幕上也会显示。假如文件已经存在,将覆盖。

spool /home/oracle/out.txt append

追加模式

spool: 显示当前spool 状态

Spool off;   关闭spool

set termout off: 执行SQL脚本文件时,不要输出到屏幕。交互式输入的SQL不受此影响。与spool联合使用,可以将SQL脚本文件的结果直接保存到文件里,而不是输出到屏幕。



autotrace

  • set autotrace on
  • set autotrace traceonly
  • set autotrace on explain
  • set autotrace on stat

set arraysize 200

格式

col abc clear   清除用户的格式设置,采用默认格式

col abc format a20;    --将abc列的长度设置为20个字符

col abc format 00;      --2位数字,10位不足用0填充

col abc format 99       --2位数字,10位不足不填充。

col abc format $9,000 --四位数字,千位不足不填充。前缀$

col abc 查看当前格式设置

上述数字格式,若实际数字位数超出。将全部显示为#。


break on xxx;    不显示重复的xxx列

break on deptno skip 1;    deptno列出现新值时,加一空行

select empno, deptno from emp  order by deptno;
     EMPNO     DEPTNO
---------- ----------
      7935         10
      7934
      7839
      7782


      7566         20
      7369
      7902
      7876
      7788


      7499         30
      7844
      7900
      7521
      7698
      7654

Define VS declare

Define: 仅仅定义一个替换变量。假如在define里包含公式,将不会被计算。

define: 显示所有替换变量

define abc = sal

define abc : 显示替换变量abc的值

select &abc from emp where rownum =1;

引用abc

这里&abc是一个替换变量,sqlplus 扫描到&时就提示用户输入。

考虑这个SQL:

insert into emp (empno, ename, deptno) values (98, '&abc', 10);

用户不希望&abc作为替换变量,而是作为常量。解决方法:

1. set define off

2. set escape '\'

insert into emp (empno, ename, deptno) values (98, '\&abc', 10);

3. insert into emp (empno, ename, deptno) values (97, chr(38)||'aa',10);

4. insert into emp (empno, ename, deptno) values (96, '&'||'aa',10);

'&'表示一个长度为0的替换变量,sqplus会忽略它。
commit;




Declare: 定义一个绑定变量。

variable abc number --定义

execute :abc := 4; --赋值

print :abc --输出值


Archive Log List

显示redo log信息

个人sql*Plus配置分享

set timing on
set serveroutput on
set pagesize 100
set linesize 160
set arraysize 200
set termout off
define gname=idle
column global_name new_value gname
select lower(user) || '@' || substr(global_name,1,decode(dot,0,length(global_name),dot-1)) global_name
from (select global_name,instr(global_name,'.') dot from global_name);
set sqlprompt '$&gname> '
set termout on

set null (null)      --display (null) that represents a null value

--Global_name是database的global name

--New_value:将column global_name的值赋给gname


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值