Shell 脚本和sqlplus间的交互

有些时候我们可能需要shell脚本通过oracle的sqlplus执行一些sql,并对结果集进行相关的操作。

1、设置输出显示

SQL> show all --查看所有68个系统变量值
     SQL> show user --显示当前连接用户
     SQL> show error --显示错误
     SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "
     SQL> set linesize 1000 --设置屏幕显示行宽,默认100
     SQL> set autocommit ON --设置是否自动提交,默认为OFF
     SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
     SQL> set arraysize 1 --默认为15
     SQL> set long 1000 --默认为80
     SQL> desc user_views -- 显示视图属性表
     SQL> desc user_tables -- 显示表属性表
     SQL> run 执行当前缓冲区的命令 
     SQL> / 执行当前缓冲区的命令 
     SQL> r 执行当前缓冲区的命令     SQL> @s<回车>
           系统会自动查询当前用户下的所有表、视图、同义词。     SQL> @@文件名 在.sql文件中调用令一个.sql文件时使用
   
    SQL> set timing on;     //设置显示“已用时间:XXXX”
  SQL> set autotrace on-;   //设置允许对执行的sql进行分析
  SQL> set trimout on; //去除标准输出每行的拖尾空格,缺省为off
  SQL> set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
  SQL> set echo on       //设置运行命令是是否显示语句
  SQL> set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
  SQL> set feedback on;   //设置显示“已选择XX行”
  SQL> set feedback off;   //回显本次sql命令处理的记录条数,缺省为on
  SQL> set colsep‘ ‘; //输出分隔符
  SQL> set heading off;   //输出域标题,缺省为on
  SQL> set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。
  SQL> set linesize 80;   //输出一行字符个数,缺省为80
  SQL> set numwidth 12;   //输出number类型域长度,缺省为10
  SQL> set termout off;   //显示脚本中的命令的执行结果,缺省为on
  SQL> set serveroutput on;  //设置允许显示输出类似dbms_output
  SQL> set verify off         //可以关闭和打开提示确认信息old 1和new 1的显示.

 

2、获取 select 输出内容

sqlplus -silent /nolog <<EOF
    conn usrName/Password@Inst ;
    set feedback off;
    set head off;
    spool OutPutFileName;
    select xxxx FROM TableName WHERE yyyy=zzzz;
    spool off;
    EOF

3、 DDL语句部分列表:

alter procedure           重编译存贮过程
  alter table               增加表列、修改表列、更改存贮分配
  analyze                 收集数据库对象的性能统计值并送入代价的优化器
  alter table add constraint   在已有的表上增加约束
  create table              创建表
  create index              创建索引
  drop index               删除索引
  drop table               删除表
  grant                   将权限或角色授予用户或其它角色
  truncate                 删除表中所有行

4、三.DML (数据操纵语言)允许用户对数据库中的数据进行insert、update、delete和select等操
作。正如名字所示,DML处理数据库中的数据内容。最常见的DML语句是insert、update、


delete和select。 
  Insert
  Delete 
  Update 
  Select 
  Commit work          把当前事务所作的更改永久化(写入磁盘) 
  Rollback              作废上次提交以来的所有更改