`

sqlplus set用法

阅读更多
set heading off——不显示每行的列名
set echo off——不重复显示所要执行的sql语句
set line 200——设置每行显示200字符
set pages 0——不进行分页显示
set feed off——不显示sql语句的运行结果(selected N rows)


SQL code 
-- 这些代码的目的是将COMPONENT表的数据
-- 导出Insert语句
-- one_table.sql的代码是通过all_tab_columns,
-- 将表的列写成查询语句,并且加上set feedback off等设置命令
-- 并在./data/以导出表的名称命名的Sql文件,然后在执行这个文件,
-- 形成./data/以导出表的名称加_data命名的Sql文件。

--*******************************
--File main.sql
--*******************************
set echo off         -- 是否显示脚本中正在执行的SQL语句 on 显示 off 不显示
set serveroutput on  -- 使用dbms_output.put_line时,是否在屏幕上显示信息 on 显示 off 不显示
set feedback off     -- 是否显示当前sql语句查询或修改的行数 off 不显示查询或修改的行数     
set trimspool on     -- 是否去除重定向(spool)输出每行的拖尾空格,on 去除 off 不去除
set line 10000       -- 设置一行显示的字符总数
set verify off       -- 是否显示替代变量被替代前后的语句 on 显示 off 不显示
set head off         -- 是否显示列标题 on 显示 off 不显示

@@ one_table.sql 'COMPONENT';  -- 执行main.sql目录下的one_table.sql 'COMPONENT' 是输入的参数

set head on        
set line 100 
set feedback on 
set termout on   -- 是否显示脚本中的命令的执行结果 on 显示 off 不显示
set echo on      

--*******************************
--File one_table.sql
--*******************************
prompt *** Process &1 ...;       -- 在屏幕上显示  *** Process COMPONENT ...

set serveroutput on 
set echo off 
set feedback off 
set trimspool on 
set line 10000 
set verify off 
set feedback off 
set head off 
set termout off
define tab_name = '&1'           -- 定义变量 tab_name 并且将 'COMPONENT' 赋值给tab_name

spool ./data/&tab_name..sql      -- 将屏幕显示的结果输出到./data/COMPONENT.sql文件中
declare                          -- 声明变量 关键字
  -- 定义 游标 C1 有两个入口参数 v_owner v_tab_name
  cursor c1(v_owner varchar2, v_tab_name varchar2) is
  select column_name, data_type
    from all_tab_columns
   where table_name = v_tab_name
     and owner = v_owner;
  -- 变量的注释只能用猜的
  field_list      varchar2(4000);  -- 存储表列的列表
  field_list_sel  varchar2(4000);  -- 存储选择的表列的列表
  fmt_field       varchar2(200);       
  date_format     varchar2(30) := 'yyyymmddhh24miss'; -- 日期格式
  v_owner varchar2(30) := user;  
  v_tab_name varchar2(30) := upper(trim('&tab_name')); 
begin
  dbms_output.enable(1000000);   -- 设置dmbs_output输出的缓冲区大小
  dbms_output.put_line('set echo off feedback off'); -- 在屏幕上输出 "set echo off feedback off" 信息
  dbms_output.put_line('spool ./data/&tab_name' || '_data.sql');
  -- Print the insert field 
  dbms_output.put_line('variable field_list varchar2(4000);');
  dbms_output.put_line('begin');
  dbms_output.put_line(' :field_list := ''insert into &tab_name (''' );
  -- 打开游标并c1并循环提取游标数据
  for rec1 in c1(v_owner, v_tab_name) loop
    if c1%rowcount = 1 then  -- 检查游标是否只有一条数据
      field_list := ' || '' ' || rec1.column_name || '''';
    else
      field_list := ' || '',' || rec1.column_name || '''';
    end if;
    dbms_output.put_line(field_list);
  end loop;

  dbms_output.put_line('||'')''||chr(10)||''values ('';');
  dbms_output.put_line('end;');
  dbms_output.put_line('/'); 

  -- For select SQL to generate insert statement
  dbms_output.put_line('select :field_list || chr(10) ||');
  for rec1 in c1(v_owner, v_tab_name) loop
    -- For insert values clause
    if rec1.data_type = 'DATE' then
      fmt_field := '''to_date(''''''||to_char(' || rec1.column_name || ', ''' || 
      date_format || ''')||'''''',''''' || date_format || ''''')''';
    elsif rec1.data_type in ('CHAR', 'VARCHAR2') then
      fmt_field := ''''''''' || replace(' || rec1.column_name || ','''''''', '''''''''''')|| ''''''''';
    else
      fmt_field := 'to_char(' || rec1.column_name || ')';
    end if;
    if c1%rowcount = 1 then
      field_list_sel := fmt_field;
    else 
      field_list_sel := ' ||'','' || ' || fmt_field;
    end if;
    dbms_output.put_line(field_list_sel);
end loop;
  dbms_output.put_line('|| '');''');
  dbms_output.put_line('from &tab_name ;');
  dbms_output.put_line('spoo off;');
end;
/
spool off;

@ ./data/&tab_name..sql

set head on 
set line 100
set termout on

SQL> set echo on—————————————————设置运行命令是是否显示语句 
SQL> set feedback on———————————————-设置显示“已选择XX行” 
SQL> set colsep | —————————————————设置列与列之间的分割符号 
SQL> set pagesize 10———————————————–设置每一页的行数 
SQL> SET SERVEROUTPUT ON——————————-设置允许显示输出类似dbms_output.putline 
SQL> set heading on————————————————设置显示列名 
SQL> set timing on————————————————–设置显示“已用时间:XXXX” 
SQL> set time on—————————————————–设置显示当前时间 
SQL> set autotrace on———————————————–设置允许对执行的sql进行分析 

 

sqlplus sys/sys@DODO as sysdba
sqlplus /as sysdba 

sqlplus /nolog

SQL>conn sys/sys@DODO as sysdba

 

 

     1、执行一个SQL脚本 

 
    SQL> start D:/a.sql 
    SQL> @ D:/a.sql 
    注:若需要在一个脚本中调用另一个脚本,则使用 @@D:/a.sql 
 
    2、重新执行上一次命令: 
 
    SQL> /               --也可使用 run/r 来替代执行 
 
    3、编辑脚本: 
 
    SQL> edit            --编辑当前输入的文本(前1次执行的部分) 
    SQL> edit D:/a.sql   --编辑制定文档 
    注:在txt中编辑完成后保存,关闭即修改完成,使用“/”后运行 
 
    4、保存脚本: 
 
    SQL> save a          --自动存档为a.sql 保存在C:/Documents and Settings/wangxiaoqi 
    SQL> save D:/a       --保存到D:/a.sql 
 
    5、导入脚本: 
 
    SQL> get D:/a 
 
    6、显示一个表结构: 
 
    SQL> desc tab        --如果tab不是表,则只显示其类型和名字 
 
    7、保存所有输入: 
 
    SQL> spool D:/xxx    --建立一个xxx.LST文件 
    SQL> spool             --显示当前spool状态 
    SQL> select * from dual; 
    SQL> spool off       --结束录入 
    
    8、执行过程 
    SQL> execute  a; 
 
    9、增加页眉和页脚: 
 
    SQL> TTITLE abc      --添加页眉“abc” 
    SQL> BTITLE def      --添加页脚“def” 
    SQL> TTITLE OFF      --取消页眉显示 
 
三、COLUMN[COL]命令修改字段属性: 
 
    可以修改的属性有: 
    ALI[AS] alias
    CLE[AR] 
    FOLD_A[FTER] 
    FOLD_B[EFORE] 
    FOR[MAT] format 
    HEA[DING] text 
    JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} 
    LIKE { expr|alias} 
    NEWL[INE] 
    NEW_V[ALUE] variable 
    NOPRI[NT]|PRI[NT] 
    NUL[L] text 
    OLD_V[ALUE] variable 
    ON|OFF 
    WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] 
    注:若不同表的同列名,会一起改掉! 
 
    1、HEADING--改变字段名 
 
    SQL> COLUMN id HEADING 'XX|YY'  --使用'|'可将列名显示为两行 
 
    2、FORMAT--改变字符长度 & 格式化数值 
 
    SQL> COLUMN id FORMAT a20       --此字段长20个字符,只能针对字符,若为数字则无法正常显示 
    SQL> COLUMN id FORMAT $999.00   --前缀$,小数点前3位,小数点后2位四舍五入 
 
    3、JUSTIFY--改变字段名显示位置 
 
    SQL> COLUMN id JUSTIFY center   --居中显示,默认的都是靠右(r )显示 
 
    4、NOPRINT--不显示 
 
    SQL> COLUMN id NOPRINT          --不显示出来,可用PRINT设置回来 
 
    5、NULL--设置NULL值显示 
 
    SQL> COLUMN COMM NULL 0.00      --将NULL值设置位0.00  注意必须加上COMM  注:不起作用。   
 
    6、WRAPPED--设置回绕方式 
 
    SQL> COLUMN id FORMAT a5        --设置长度为5 
    SQL> COLUMN id WRAPPED         --表示直接按长度回绕 
    SQL> COLUMN id WORD_WRAPPED   --按单词回绕 
    SQL> COLUMN id TRUNCATED      --直接按长度截断 
 
    7、COLUMN--显示当前列所有属性 
 
    SQL> COLUMN id                  --后面不加列名时显示所有的COLUMN 
 
    8、OFF|ON--设置某一字段关闭 
 
    SQL> COLUMN id OFF 
 
    9、CLEAR--清空所有字段属性 
 
    SQL> CLEAR COLUMNS 
 
 
 
四、SQL*Plus的系统参数: 
 
    show all         --显示所有系统参数的当前值 
    show [参数]      --显示某个系统参数值 
    set  [参数][值]  --设置系统参数值 
 
    appinfo is OFF and set to "SQL*Plus"
    arraysize 15 
    SQL*Plus一次从oracle获取的行数,设置越大可提高效率,但是对内存有要求,1000以上效果不大 
    autocommit OFF 
    针对session的自动提交 SQL> SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}   --有IMM[EDIATE]则无需再ON 
    autoprint OFF
    autorecovery OFF
    autotrace OFF 
    设置可以对执行的SQL进行分析 SQL> SET AUTOTRACE ON 
    blockterminator "." (hex 2e)
    btitle OFF and is the first few characters of the next SELECT statement
    cmdsep OFF
    colsep " " 
    设置列与列之间的分割符号 SQL> SET COLSEP '|' 
    compatibility version NATIVE 
    数据库版本,NATIVE为默认,可制定V6,V7,V8 
    concat "." (hex 2e)
    copycommit 0
    COPYTYPECHECK is ON
    define "&" (hex 26) 
    替换变量时所使用的字符 
    describe DEPTH 1 LINENUM OFF INDENT ON
    echo OFF 
    是否显示执行代码 SQL> SET ECHO {ON|OFF} 
    editfile "afiedt.buf"
    embedded OFF
    escape OFF
    FEEDBACK ON for 6 or more rows 
    查询、修改时所影响的行数 SQL> SET FEED[BACK] {6|n|ON|OFF} 
    flagger OFF
    flush ON
    heading ON 
    是否显示列标题 SQL> SET HEA[DING] {ON|OFF} 
    headsep "|" (hex 7c)
    instance "local"
    linesize 100 
    设置一行可容纳的字符数 SQL> SET LIN[ESIZE] {80|n} 
    lno 8
    loboffset 1
    logsource ""
    long 5000
    longchunksize 80
    markup HTML OFF ...
    newpage 1 
    页与页之间的分隔符 SQL> SET NEWP[AGE] {1|n|NONE} 
              当set newpage 0 时,会在每页的开头有一个小的黑方框。 
              当set newpage n 时,会在页和页之间隔着n个空行。 
              当set newpage none 时,会在页和页之间没有任何间隔。 
    null "" 
    设置null值  SQL> SET NULL 0.00 
                     但是此值显示出来后必为字符型 
    numformat ""
    numwidth 10 
    设置number类型的长度限制 SQL> SET NUM[WIDTH] 16 
    pagesize 9999 
    一页显示多少行 SQL> SET PAGES[IZE] {24|n} 
                     当设置为0时,则所有行显示在一页中,并且不显示标题行 
    PAUSE is OFF
    pno 1
    recsep WRAP
    recsepchar " " (hex 20)
    release 1002000100
    repfooter OFF and is NULL
    repheader OFF and is NULL
    serveroutput ON SIZE 1000000 FORMAT WORD_WRAPPED 
    输出DBMS.OUTPUT时是否显示 SQL> SET SERVEROUT[PUT] {ON|OFF} [size n] 
    shiftinout INVISIBLE
    showmode OFF
    spool OFF
    sqlblanklines OFF
    sqlcase MIXED
    sqlcode 0
    sqlcontinue "> "
    sqlnumber ON
    sqlpluscompatibility 10.2.0
    sqlprefix "#" (hex 23)
    sqlprompt " wangxiaoqi@DODO > "
    sqlterminator ";" (hex 3b)
    suffix "sql"
    tab ON
    termout ON 
    是否显示输出内容,例如spool输出  SQL> SET TERM[OUT] {ON|OFF} 
    timing OFF 
    SQL语句执行花费时间显示  set TIMING  {ON|OFF} 
    trimout ON 
    标准输出中每行最后的空格是否去掉 SQL> SET TRIMS[OUT] {ON|OFF} 
    trimspool ON 
    spool标准输出中每行最后的空格是否去掉 SQL> SET TRIMS[OUT] {ON|OFF} 
    ttitle OFF and is the first few characters of the next SELECT statement
    underline "-" (hex 2d)
    USER is "WANGXIAOQI"
    verify ON
    wrap : lines will be wrapped 
    当长度超过时是否回绕  SQL> SET WRA[P] {ON|OFF}   --基本上都要ON 
 
 
 
五、一些常用的小操作: 
 
    show user                      --查看当前登录用户 
    show errors                    --显示错误信息 
    show rel[ease]                 --显示版本 
    show SGA                       --显示SGA 
    set time on                    --前端始终显示时间
    select name from v$database;   --查看当前所在数据库
    select * from v$instance;      --查看所有数据库实例(似乎没什么用)
    select * from V_$PWFILE_USERS; --查看那些用户有SYSDBA/SYSOPER权限 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics