^_^小麦苗^_^

小麦苗博客,实用经典,简单易懂,接地气!---技术应用型博客,主打实用性,只讲实用的,不讲没用的,多做实验,多思考!

  • 博客访问: 6287130
  • 博文数量: 998
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-23 17:46
  • 认证徽章:
个人简介

QQ:646634621| 网名:小麦苗| 微信公众号:xiaomaimiaolhr| 11g OCM| QQ群:618766405 微信群:私聊| 《数据库笔试面试宝典》作者| OCP、OCM网络班开讲啦,有需要的小伙伴可以私聊我。

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(998)

文章存档

2018年(8)

2017年(439)

2016年(311)

2015年(167)

2014年(73)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

分类: Oracle

Oracle sqlplus的set命令详细使用和设置






SQL*PlusOracle提供的访问数据库服务器的客户端软件,是Oracle的核心组件,也是Oracle DBA最常用的工具。

1.1  sqlplus命令

sqlplus 连接数据库的时候如果不写"@字符串"的话走的是ORACLE_SID路径,如果加上的话走的是TNSNAMES.ORA文件

 

C:\Users\Administrator>sqlplus /?

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 12 17 14:36:43 2012

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

 

SQL*Plus: Release 11.2.0.1.0 Production

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

使用 SQL*Plus 执行 SQL, PL/SQL SQL*Plus 语句。

 

用法 1: sqlplus -H | -V

 

    -H             显示 SQL*Plus 版本和

 用法帮助。

    -V             显示 SQL*Plus 版本。

 

用法 2: sqlplus [ [] [{logon | /nolog}] [] ]

 

  : [-C ] [-L] [-M ""] [-R ] [-S]

 

    -C    将受影响的命令的兼容性设置为

  指定的版本。该版本具有

 "x.y[.z]" 格式。例如, -C 10.2.0

    -L             只尝试登录一次, 而不是

 在出错时再次提示。

    -M "" 设置输出的自动 HTML 标记。选项

 的格式为:

 HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text]

 [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]

    -R      设置受限模式, 以禁用与文件系统交互的

  SQL*Plus 命令。级别可以

  1, 2 3。最高限制级别为 -R 3, 该级别

 禁用与文件系统交互的

 所有用户命令。

    -S             设置无提示模式, 该模式隐藏

 命令的 SQL*Plus 标帜, 提示和回显

 的显示。

 

  : {[/][@] | / }

              [AS {SYSDBA | SYSOPER | SYSASM}] [EDITION=value]

 

    指定数据库帐户用户名, 口令和数据库连接

    的连接标识符。如果没有连接

    标识符, SQL*Plus 将连接到默认数据库。

 

    AS SYSDBA, AS SYSOPER AS SYSASM 选项是数据库

    管理权限。

 

    的形式可以是 Net 服务名

    或轻松连接。

 

      @[ | [//]Host[:Port]/]

 

        是服务的简单名称, 它解析

        为连接描述符。

 

        示例: 使用 Net 服务名连接到数据库,

                 数据库 Net 服务名为 ORCL

 

           sqlplus myusername/mypassword@ORCL

 

        Host 指定数据库服务器计算机的主机名或 IP

        地址。

 

        Port 指定数据库服务器上的监听端口。

 

        指定要访问的数据库的

        服务名。

 

        示例: 使用轻松连接连接到数据库,

                 服务名为 ORCL

 

           sqlplus myusername/mypassword@Host/ORCL

 

    /NOLOG 选项可启动 SQL*Plus 而不连接到

    数据库。

 

    EDITION 指定会话版本的值。

 

 

  : @|[.] [ ...]

 

    使用将分配给脚本中的替代变量的指定参数

    Web 服务器 (URL) 或本地文件系统 (filename.ext)

    运行指定的 SQL*Plus 脚本。

 

在启动 SQL*Plus 并且执行 CONNECT 命令后, 将运行站点概要

文件 (例如, $ORACLE_HOME/sqlplus/admin/glogin.sql) 和用户概要文件

(例如, 工作目录中的 login.sql)。这些文件

包含 SQL*Plus 命令。

 

有关详细信息, 请参阅 SQL*Plus 用户指南和参考。

 

Oraclesql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。


我们通常所说的DMLDDLDCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。

 

除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。

 

SQL脚本中使用注释:

1.remark

2./* ..*/ 第一个注释符后需跟一个空格

3.--

注意:

    1、注释不能在最初的几个关键字之前,SQLPLUS会对/之前的文本解析为命令而提交

    CREATE OR REPLACE

    /* HELLO */

    PROCEDURE HELLO AS

    BEGIN

    DBMS_OUTPUT.PUT_LINE('HELLO');

    END;

    /

    Warning: Procedure created with compilation errors.

    修改为:

    CREATE OR REPLACE PROCEDURE

    /* HELLO */

    HELLO AS

    BEGIN

    DBMS_OUTPUT.PUT_LINE('HELLO');

    END;

    /

    Procedure created.

 

1.1.1      帮助文档

脚本:@?/sqlplus/admin/help/hlpbld.sql helpus.sql

 

[ZFXDESKDB1:oracle]:/oracle>cd $ORACLE_HOME/sqlplus/admin/help

[ZFXDESKDB1:oracle]:/oracle/app/oracle/product/11.2.0/db/sqlplus/admin/help>l

total 168

-rw-r--r--    1 oracle   dba             265 Feb 16 2003  helpbld.sql

-rw-r--r--    1 oracle   dba             366 Jan 03 2011  helpdrop.sql

-rw-r--r--    1 oracle   dba           71817 Aug 16 2012  helpus.sql

-rw-r--r--    1 oracle   dba            2154 Jan 03 2011  hlpbld.sql

[ZFXDESKDB1:oracle]:/oracle/app/oracle/product/11.2.0/db/sqlplus/admin/help>more helpbld.sql

--

-- Copyright (c) Oracle Corporation 2003.  All Rights Reserved.

--

-- NAME

--   helpbld.sql

--

-- DESCRIPTION

--   Invoke and execute the script to loads the SQL*Plus HELP system and

--   upon completion, exit the SQL*Plus connection

--


@@&1/hlpbld.sql &2

exit

[ZFXDESKDB1:oracle]:/oracle/app/oracle/product/11.2.0/db/sqlplus/admin/help>sqlplus / as sysdba


SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 13 09:54:19 2016


Copyright (c) 1982, 2013, Oracle.  All rights reserved.



Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options


SYS@omflhr> ? set

SP2-0171: HELP system not available.

SYS@omflhr> @?/sqlplus/admin/help/hlpbld.sql helpus.sql


PL/SQL procedure successfully completed.



Table created.



Grant succeeded.



。。。。。。。。。。。。。。。。。。。。。。。。。



Commit complete.



PL/SQL procedure successfully completed.


SYS@omflhr> ? set


 SET

 ---


 Sets a system variable to alter the SQL*Plus environment settings

 for your current session. For example, to:

     -   set the display width for data

     -   customize HTML formatting

     -   enable or disable printing of column headings

     -   set the number of lines per page


 SET system_variable value


 where system_variable and value represent one of the following clauses:


   APPI[NFO]{OFF|ON|text} NEWP[AGE] {1|n|NONE}

   ARRAY[SIZE] {15|n}     NULL text

   AUTO[COMMIT] {OFF|ON|IMM[EDIATE]|n}      NUMF[ORMAT] format

   AUTOP[RINT] {OFF|ON}   NUM[WIDTH] {10|n}

   AUTORECOVERY {OFF|ON}  PAGES[IZE] {14|n}

   AUTOT[RACE] {OFF|ON|TRACE[ONLY]}         PAU[SE] {OFF|ON|text}

     [EXP[LAIN]] [STAT[ISTICS]]             RECSEP {WR[APPED]|EA[CH]|OFF}

   BLO[CKTERMINATOR] {.|c|ON|OFF}           RECSEPCHAR {_|c}

   CMDS[EP] {;|c|OFF|ON}  SERVEROUT[PUT] {ON|OFF}

   COLSEP {_|text}          [SIZE {n | UNLIMITED}]

   CON[CAT] {.|c|ON|OFF}    [FOR[MAT]  {WRA[PPED] |

   COPYC[OMMIT] {0|n}        WOR[D_WRAPPED] |

   COPYTYPECHECK {ON|OFF}    TRU[NCATED]}]

   DEF[INE] {&|c|ON|OFF}  SHIFT[INOUT] {VIS[IBLE] |

   DESCRIBE [DEPTH {1|n|ALL}]                 INV[ISIBLE]}

     [LINENUM {OFF|ON}] [INDENT {OFF|ON}]   SHOW[MODE] {OFF|ON}

   ECHO {OFF|ON}          SQLBL[ANKLINES] {OFF|ON}

   EDITF[ILE] file_name[.ext]               SQLC[ASE] {MIX[ED] |

   EMB[EDDED] {OFF|ON}      LO[WER] | UP[PER]}

   ERRORL[OGGING] {ON|OFF}SQLCO[NTINUE] {> | text}

     [TABLE [schema.]tablename]             SQLN[UMBER] {ON|OFF}

     [TRUNCATE] [IDENTIFIER identifier]     SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

   ESC[APE] {\|c|OFF|ON}  SQLPRE[FIX] {#|c}

   ESCCHAR {@|?|%|$|OFF}  SQLP[ROMPT] {SQL>|text}

   EXITC[OMMIT] {ON|OFF}  SQLT[ERMINATOR] {;|c|ON|OFF}

   FEED[BACK] {6|n|ON|OFF}SUF[FIX] {SQL|text}

   FLAGGER {OFF|ENTRY|INTERMED[IATE]|FULL}  TAB {ON|OFF}

   FLU[SH] {ON|OFF}       TERM[OUT] {ON|OFF}

   HEA[DING] {ON|OFF}     TI[ME] {OFF|ON}

   HEADS[EP] {||c|ON|OFF} TIMI[NG] {OFF|ON}

   INSTANCE [instance_path|LOCAL]           TRIM[OUT] {ON|OFF}

   LIN[ESIZE] {80|n}      TRIMS[POOL] {OFF|ON}

   LOBOF[FSET] {1|n}      UND[ERLINE] {-|c|ON|OFF}

   LOGSOURCE [pathname]   VER[IFY] {ON|OFF}

   LONG {80|n}            WRA[P] {ON|OFF}

   LONGC[HUNKSIZE] {80|n} XQUERY {BASEURI text|

   MARK[UP] HTML [OFF|ON]   ORDERING{UNORDERED|

     [HEAD text] [BODY text] [TABLE text]              ORDERED|DEFAULT}|

     [ENTMAP {ON|OFF}]      NODE{BYVALUE|BYREFERENCE|

     [SPOOL {OFF|ON}]            DEFAULT}|

     [PRE[FORMAT] {OFF|ON}] CONTEXT text}



SYS@omflhr>


SYS@omflhr> ? index


Enter Help [topic] for help.


 @             COPY         PAUSE  SHUTDOWN

 @@            DEFINE       PRINT  SPOOL

 /             DEL          PROMPT SQLPLUS

 ACCEPT        DESCRIBE     QUIT   START

 APPEND        DISCONNECT   RECOVERSTARTUP

 ARCHIVE LOG   EDIT         REMARK STORE

 ATTRIBUTE     EXECUTE      REPFOOTER                TIMING

 BREAK         EXIT         REPHEADER                TTITLE

 BTITLE        GET          RESERVED WORDS (SQL)     UNDEFINE

 CHANGE        HELP         RESERVED WORDS (PL/SQL)  VARIABLE

 CLEAR         HOST         RUN    WHENEVER OSERROR

 COLUMN        INPUT        SAVE   WHENEVER SQLERROR

 COMPUTE       LIST         SET    XQUERY

 CONNECT       PASSWORD     SHOW



SYS@omflhr>

 

1.1.2       基本命令

1.1.2.1      执行一个SQL脚本文件

SQL>start file_name

SQL>@ file_name

我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。

 

1.1.2.2      对当前的输入进行编辑

SQL>edit

 

1.1.2.3      重新运行上一次运行的sql语句

SQL>/

 

1.1.2.4      将显示的内容输出到指定文件

SQL> SPOOL file_name

在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。

1.1.2.5      关闭spool输出

SQL> SPOOL OFF

只有关闭spool输出,才会在输出文件中看到输出的内容。

 

1.1.2.6      显示一个表的结构

SQL> desc table_name



1.1.2.7      sql*plus 和 操作系统交互


不退出sql*plus,在sql*plus中执行一个操作系统命令:

HOST

Sql> host hostname

该命令在windows下可能被支持。

 

sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回

Linux 下是:! 或者host

Windows 是:$ 或者host

sql>!

$hostname

$exit

sql>  


 

1.1.3       set命令设置环境变量

概述:可以用来控制输出的各种格式,set  show 如果希望永久的保存相关的设置,可以去修改 glogin.sql 脚本。

注意:这些设置的顺序不同,效果可能不同。


Oraclesql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。


我们通常所说的DMLDDLDCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。


除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。

 

SQL> help set

 SET

 ---

 Sets a system variable to alter the SQL*Plus environment settings

 for your current session. For example, to:

     -   set the display width for data

     -   customize HTML formatting

     -   enable or disable printing of column headings

     -   set the number of lines per page

 In iSQL*Plus, you can also use the Preferences screen to set

 system variables.

 

 SET system_variable value

 where system_variable and value represent one of the following clauses:

 

   APPI[NFO]{OFF|ON|text} NUM[WIDTH] {10|n}

   ARRAY[SIZE] {15|n}     PAGES[IZE] {14|n}

   AUTO[COMMIT] {OFF|ON|IMM[EDIATE]|n}      PAU[SE] {OFF|ON|text}

   AUTOP[RINT] {OFF|ON}   RECSEP {WR[APPED]|EA[CH]|OFF}

   AUTORECOVERY {OFF|ON}  RECSEPCHAR {_|c}

   AUTOT[RACE] {OFF|ON|TRACE[ONLY]}         SERVEROUT[PUT] {ON|OFF}

     [EXP[LAIN]] [STAT[ISTICS]]               [SIZE {n | UNLIMITED}] [FOR[MAT]

   BLO[CKTERMINATOR] {.|c|ON|OFF}             {WRA[PPED] |

   CMDS[EP] {;|c|OFF|ON}     WOR[D_WRAPPED] |

   COLSEP {_|text}           TRU[NCATED]}]

   CON[CAT] {.|c|ON|OFF} *SHIFT[INOUT] {VIS[IBLE] |

   COPYC[OMMIT] {0|n}       INV[ISIBLE]}

   COPYTYPECHECK {ON|OFF}*SHOW[MODE] {OFF|ON}

   DEF[INE] {&|c|ON|OFF} *SQLBL[ANKLINES] {OFF|ON}

   DESCRIBE [DEPTH {1|n|ALL}]               SQLC[ASE] {MIX[ED] |

     [LINENUM {OFF|ON}] [INDENT {OFF|ON}]     LO[WER] | UP[PER]}

   ECHO {OFF|ON}         *SQLCO[NTINUE] {> | text}

  *EDITF[ILE] file_name[.ext]              *SQLN[UMBER] {ON|OFF}

   EMB[EDDED] {OFF|ON}    SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

   ESC[APE] {/|c|OFF|ON} *SQLPRE[FIX] {#|c}

   FEED[BACK] {6|n|ON|OFF}                 *SQLP[ROMPT] {SQL>|text}

   FLAGGER {OFF|ENTRY|INTERMED[IATE]|FULL}  SQLT[ERMINATOR] {;|c|ON|OFF}

  *FLU[SH] {ON|OFF}      *SUF[FIX] {SQL|text}

   HEA[DING] {ON|OFF}    *TAB {ON|OFF}

   HEADS[EP] {||c|ON|OFF}*TERM[OUT] {ON|OFF}

   INSTANCE [instance_path|LOCAL]          *TI[ME] {OFF|ON}

   LIN[ESIZE] {80|n} ({150|n} iSQL*Plus)    TIMI[NG] {OFF|ON}

   LOBOF[FSET] {1|n}     *TRIM[OUT] {ON|OFF}

   LOGSOURCE [pathname]  *TRIMS[POOL] {OFF|ON}

   LONG {80|n}            UND[ERLINE] {-|c|ON|OFF}

   LONGC[HUNKSIZE] {80|n} VER[IFY] {ON|OFF}

   MARK[UP] HTML [OFF|ON] WRA[P] {ON|OFF}

     [HEAD text] [BODY text] [TABLE text]   XQUERY {BASEURI text|

     [ENTMAP {ON|OFF}]      ORDERING{UNORDERED|

     [SPOOL {OFF|ON}]                ORDERED|DEFAULT}|

     [PRE[FORMAT] {OFF|ON}] NODE{BYVALUE|BYREFERENCE|

   NEWP[AGE] {1|n|NONE}          DEFAULT}|

   NULL text                CONTEXT text}

   NUMF[ORMAT] format

 

 An asterisk (*) indicates the SET option is not supported in iSQL*Plus.

 

1.1.3.1     set  pagesize

 pagesize

说明:设置每页显示的行数目,默认是 14,用法和 linesize 一样,至于其它环境参数的使用也是大同小异

例如:set  pagesize  90

 

set pagesize 0;  --设置每页显示的行数,缺省为24,为了避免分页,可设定为0,但不显示列标题

 

设置一页有多少行数

SQL> SET PAGES[IZE] {24|n}  

如果设为0,则所有的输出内容为一页并且不显示列标题 ,取值范围为 ( 0 50000)

 

 

1.1.3.2      set colsep

set colsep  ' ';    --域输出分隔符,默认为空格


1.1.3.3      set trimout

set trimout on;   --去除标准输出每行的拖尾空格,缺省为off ,也可以set trim on


1.1.3.4      set trimspool

set trimspool on;  --去除重定向(spool)输出每行的拖尾空格,on 去除 off 不去除,缺省为off去字段空格),也可以为 set trims on

 

 

1.1.3.5      set newpage


SET NEWPAGE NONE; --默认为1设置页与页之间的分隔

SQL> SET NEWP[AGE] {1|n|NONE}

set newpage 0 时,会在每页的开头有一个小的黑方框。

set newpage n 时,会在页和页之间隔着n个空行。

set newpage none 时,会在页和页之间没有任何间隔。


1.1.3.6      set  verify

set verify off;      --是否显示替代变量被替代前后的语句,默认开启   

set verify on/off

当在sqlplus中运行的sql语句中有替代变量(以&&&打头)的时候,

set verify(或ver) on/off可以设置是否显示替代变量被替代前后的语句。

:

SQL> set ver on;

SQL> select * from dual where 1=&var;

Enter value for var: 1

old 1: select * from dual where 1=&var

new 1: select * from dual where 1=1

 

DU

--

X

 

而如果设为off,则显示如下:

SQL> set ver off;

SQL> select * from dual where 1=&var;

Enter value for var: 1

 

DU

--

X

使用以&&&开头的替代变量的前提是set define on;(不过这是缺省状态)。  


1.1.3.7      set space

SET SPACE 0;--默认为1

 

1.1.3.8      set  echo

 

  set echo on:显示文件中的每条命令及其执行结果;

  set echo off:不显示文件中的命令,只显示其执行结果。

 

set echo off;   --显示start启动的脚本中的每个sql命令,缺省为on,是否显示执行的命令内容 

在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句

SQL> SET ECHO {ON|OFF}

 

 

1.1.3.9      set feedback

 

有三种方式:

 

           set feedback on

 

           set feedback off

 

           set feedback n

 

默认的当一条sql发出的时候,oracle会给一个反馈,比如说创建表的时候,如果成功,命令行会返回类似:Table created的反馈,又比如执行一个pl/sql成功的时候,命令行会返回:PL/SQL procedure successfully completed 。当载脚本中运行很多语句的时候,一般将feedback设为off

 

set feedback n:当一条sql语句返回n或者大于n行记录的时候,就会有feedback,比如:set feedback 5,当返回记录等于或多于5行的时候会有类似8 rows selected.的反馈.如果返回行少于5则没有此反馈。

 

set feedback off; --显示本次sql命令处理的记录条数,缺省为on,也可以 SET FEED OFF; 即是否显示如下内容:*   rows   selected

是否显示当前sql语句查询或修改的行数

SQL> SET FEED[BACK] {6|n|ON|OFF}

默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数

 

 

回显本次sql命令处理的记录条数,缺省为on

SQL> select * from test where id = 1;

NAME               ID

---------- ----------

a 1

b 1

已选择2行。

SQL> set feedback off;

SQL> /

NAME               ID

---------- ----------

a 1

b 1

SQL> set feedback on;

SQL> /

NAME               ID

---------- ----------

a 1

b 1

已选择2行。

 

 

1.1.3.10    set termout

 

有两种形式:

 

           set termout on

 

           set termout off

 

当设置为set termout off的时候就会忽略sql语句的输出如果这条sql是在脚本中运行的话。也就是说如果命令不在脚本中运行,即使设置为set termout off,仍然会返回sql的结果。

term命令:

  当和SPOOL命令联合使用时,可以取消SQLPLUS输出,查询结果仅仅存在于假脱机文件中

  set term on:查询结果既显示于假脱机文件中,又在SQLPLUS中显示;

  set term off:查询结果仅仅显示于假脱机文件中。

 

 set termout off;   --显示脚本中的命令的执行结果,缺省为on SET TERM OFF ;注意:这个尤为重要,可以设置需要显示和不需要显示的内容,本人深受其害


是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。

SQL> SET TERM[OUT] {ON|OFF}

在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。

 

 

1.1.3.11    set heading

 

有两种形式:

 

            set heading on

 

            set heading off

 

Setting the heading specifies whether column headings (names) are printed or not.

 

设置为set heading off的时候不显示列标题。


set heading off; --输出域标题,缺省为on,即是否显示字段名称

是否显示列标题

SQL> SET HEA[DING] {ON|OFF}

set heading off 时,在每页的上面不显示列标题,而是以空白行代替

 

 

 

1.1.3.12    set linesize

SET LINESIZE 1000 ;--设置行的宽度,默认80,设置查询返回的纪录每行的宽度,超过这个宽度则会换行显示,(注意,这个问题本人曾经碰到过,花了一个上午的时间才找到原因所在)这个显然不是我们想要的结果,不够这个宽度则补空格,范围为自 1 32767 linesize

说明:设置显示行的宽度,默认是 80 个字符,使用 show  linesize 显示

例如:set  linesize  90

 

 

注:LINESIZE要稍微设置大些,免得数据被截断,它应和相应的TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。但是如果LINESIZE设置太大,会大大降低导出的速度,另外在WINDOWS下导出最好不要用PLSQL导出,速度比较慢,直接用COMMEND下的SQLPLUS命令最小化窗口执行。

 

设置一行可以容纳的字符数

SQL> SET LIN[ESIZE] {80|n}

如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。

1.1.3.13      set autocommit

 

12.1. 设置当前session是否对修改的数据进行自动提交

SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}

 

 

1.1.3.14    set null

显示时,用text值代替NULL

SQL> SET NULL text

 

1.1.3.15      set serveroutput

是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。

SQL> SET SERVEROUT[PUT] {ON|OFF}

在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。 dbms_output.put_line"吃掉"最前面的空格?

set serveroutput on后加上format wrapped参数!

 

一、       Oracle中参数serveroutput永久设置方法


serveroutput   是sqlplus的配置参数,而不是数据库的配置参数,修改并保存sqlplus的配置参数,那么每次打开sqlplus时就不用重新设置了。

设置方法如下:


1. sql> set   serveroutput   on

然后,在sqlplus中

2. sql> store   set   $ORACLE_HOME/sqlplus/admin/glogin.sql   replace

完成保存设置.


可以通过如下查看设置效果:


SQL> show serveroutput;

serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED

说明设置成功。

 

如果输出内容过多报错:

ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes

 可以设置成最大值,最大值为100W

set serveroutput on  size 1000000;

1.1.3.16    set wrap

SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。

SQL> SET WRA[P] {ON|OFF}

当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

 

 

 

 

 

1.1.3.17    SET SQLBLANKLINES ON

Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 原因是sqlplus遇到空行就认为是语句结束了.

其实要改变这种现象, 只要使用SQLBLANKLINES参数就可以了

SET SQLBLANKLINES ON

 

例如:

 

原脚本:

DROP TABLE tmp_ONT_LHR;

CREATE TABLE  tmp_ONT_LHR NOLOGGING

 as

SELECT qy.name         qy,

       jz.name         jz,

       u.name,

       u.id,

       u.vendorid,

       u.netypeid,

       U.createdate,

       u.servicestatus,

       w.code          port_code,

       w.id            port_id,

       W.SERVICESTATUS port_SERVICESTATUS,

       w.metacategory  port_metacategory

 

FROM   xb_port           w,

       xb_managedelement u,

       xb_location       qy,

       xb_location       jz

WHERE  w.meid = u.id

AND    u.managementareaid = qy.id

AND    u.siteid = jz.id

AND    u.metacategory = 'com.gxlu.ngrm.equipment.ONT'

AND    w.code IN ('LAN3', 'LAN4')

AND    qy.metacategory = 'com.gxlu.ngrm.area.ManagementArea'

AND    JZ.METACATEGORY = 'com.gxlu.ngrm.area.Site'

;

 

执行如下,报错了:

C:\Users\Administrator>sqlplus telant/test@sdh_cq_test @f:\sql\test\ont.sql

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 5 11 16:12:51 2012

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

 

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> DROP TABLE tmp_ONT_LHR;

DROP TABLE tmp_ONT_LHR

           *

1 行出现错误:

ORA-00942: table or view does not exist

 

 

SQL> CREATE TABLE  tmp_ONT_LHR NOLOGGING

  2   as

  3  SELECT qy.name         qy,

  4         jz.name         jz,

  5         u.name,

  6         u.id,

  7         u.vendorid,

  8         u.netypeid,

  9         U.createdate,

 10         u.servicestatus,

 11         w.code          port_code,

 12         w.id            port_id,

 13         W.SERVICESTATUS port_SERVICESTATUS,

 14         w.metacategory  port_metacategory

 15

SQL> FROM   xb_port           w,

SP2-0734: 未知的命令开头 "FROM   xb_..." - 忽略了剩余的行。

SQL>        xb_managedelement u,

SP2-0734: 未知的命令开头 "xb_managed..." - 忽略了剩余的行。

SQL>        xb_location       qy,

SP2-0734: 未知的命令开头 "xb_locatio..." - 忽略了剩余的行。

SQL>        xb_location       jz

SP2-0734: 未知的命令开头 "xb_locatio..." - 忽略了剩余的行。

SP2-0044: 要获取已知命令的列表, 请输入 HELP;

输入 EXIT 可退出。

SQL> WHERE  w.meid = u.id

SP2-0734: 未知的命令开头 "WHERE  w.m..." - 忽略了剩余的行。

SQL> AND    u.managementareaid = qy.id

SP2-0734: 未知的命令开头 "AND    u.m..." - 忽略了剩余的行。

SQL> AND    u.siteid = jz.id

SP2-0734: 未知的命令开头 "AND    u.s..." - 忽略了剩余的行。

SQL> AND    u.metacategory = 'com.gxlu.ngrm.equipment.ONT'

SP2-0734: 未知的命令开头 "AND    u.m..." - 忽略了剩余的行。

SP2-0044: 要获取已知命令的列表, 请输入 HELP;

输入 EXIT 可退出。

SQL> AND    w.code IN ('LAN3', 'LAN4')

SP2-0734: 未知的命令开头 "AND    w.c..." - 忽略了剩余的行。

SQL> AND    qy.metacategory = 'com.gxlu.ngrm.area.ManagementArea'

SP2-0734: 未知的命令开头 "AND    qy...." - 忽略了剩余的行。

SQL> AND    JZ.METACATEGORY = 'com.gxlu.ngrm.area.Site'

SP2-0734: 未知的命令开头 "AND    JZ...." - 忽略了剩余的行。

SQL> ;

 

 

 

1.1.3.18    set timing on

SQL> set timing on

SQL> select * from v$version;

 

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE    10.2.0.1.0      Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

已用时间:  00: 00: 00.00

 

1.1.3.19    set time on

SQL> set time on;

11:35:42 SQL> select * from t;

 

未选定行

 

已用时间:  00: 00: 00.34

11:36:26 SQL>



1.1.3.20    set numwidth

 set numwidth 38


1.1.3.21    set long

 

 set long 999999       //显示不完整


SET LONG {80 | n} 

设置LONG, CLOB, NCLOBXMLType 类型数据的显示字节数

 

SET LONGCHUNKSIZE {80 | n}

设置SQL*Plus获取LONG, CLOB, NCLOB 或者 XMLType 类型数据时的步长.

 

昨天使用dbms_sqltune.report_sql_monitor,发现仅仅显示一段,显示不全.

 

SQL> select /*+ monitor */ count(*) from dept;

  COUNT(*)

----------

         4

 

SQL> select dbms_sqltune.report_sql_monitor from dual;

REPORT_SQL_MONITOR

--------------------------------------------------------------------------------

SQL Monitoring Report

 

SQL Text

------------------------------

select /*+ monitor */

 

看一下dbms_sqltune.report_sql_monitor的返回类型clob,可以猜到long设置太小.

 

SQL> show long longc

long 80

longchunksize 80

 

修改glogin.sql 文件,没有仔细思考加入,也就是设置long=1G,longchunksize=1G

 

set long 10000000

set longchunksize 10000

 

结果灾难出现,

select dbms_sqltune.report_sql_monitor from dual;

很久都没有出来.

 

查看文档:

 

SET LONGCHUNKSIZE

SET LONGCHUNKSIZE sets the size of the increments SQL*Plus uses to retrieve a CLOB, LONG, NCLOB or XMLType value.

 

Experiment with different sizes if LONGS or LOBs are being fetched.

 

SET LONG {80 | n}

Sets maximum width (in bytes) for displaying CLOB, LONG, NCLOB and XMLType values; and for copying LONG values.

 

The maximum value of n is 2,000,000,000 bytes.

 

 

测试一下,long是显示lob的大小,LONGCHUNKSIZE是每次提取的大小,如果设置过大,导致OS使用swap.设置如下:

set long 10000000

set longchunksize 102400

 

在执行一些正常了!



1.1.3.22    SET MARKUP

语法:

SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]

 

SET MARKUP指明SQL*Plus输出HTML编码格式,必须使用SET MARKUP HTML ON SPOOL ON和SQL*Plus SPOOL命令去创建一个spool文件,并且以HTML格式输出。

 

SET MARKUP习惯称作SQLPLUS -MARKUP命令。

 

使用SQLPLUS -MARKUP HTML ON或者SQLPLUS -MARKUP HTML ON SPOOL ON 产生标准的web页,SQL*Plus 自动生成完整的用和标签封装HTML网页。 当设定SPOOL OFF或者退出SQL*Plus是,spool文件中的HTML标签就闭合。

 

SQLPLUS -MARKUP和一些其他有用的静默和限制命令一起用。

使用MARKUP HTML ON生成HTML输出,无论是

标签还是一个HTML表格。输出一个表格使用标准的HTML ,和
	
标签,自动闭合从一个查询返回结果集的行和列。当设置HTML ON时,默认产生标准HTML表格。通过设置PREFORMAT ON产生预格式化HTML
 标签。 
					


用SHOW MARKUP命令查看MARKUP操作当前状态:

SQL> show markup

markup HTML OFF HEAD " body {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;}

 

HTML [ON|OFF]

指定是否生成HTML格式,ON生成,OFF不生成,默认是OFF。

 

HEAD text

指定HTML中HEAD标签中的内容,默认情况下,文本包括级联样式和标题。

 

BODY text

指定HTML中BODY标签属性

 

TABLE text

设置

标签的属性,如BORDER, CELLPADDING, CELLSPACING和WIDTH.。默认情况下,
的WIDTH属性设置为90%,BORDER属性设置为1。

 

ENTMAP {ON|OFF}

指定在SQL * Plus中是否用HTML字符实体如, " and &等替换特殊字符, " and & 。默认设置是ON。例如:

SQL> set markup html on entmap off

SQL>

SQL> set markup html on entmap on

SQL>

SQL>

 

SPOOL {ON|OFF}

指定是否在SQL*Plus生成HTML标签 和 , 和 。默认是OFF。

注:

这是一个后台打印操作,只有在生成SPOOL文件生效,在屏幕上并不生效。

 

PRE[FORMAT] {ON|OFF}

指定SQL*Plus生成HTML时输出

标签还是HTML表格,默认是OFF,因此默认输出是写HTML表格。 
									


1.1.3.23    set editfile "afiedt.buf"

经常在工作中使用sqlplus,会在一些目录下留下afiedt.buf文件.

 

当然可以使用find命令找到并且清除它.

 

简单的方法就是在glogin.sql加入如下:

 

set editfile /tmp/afiedt.sql

 

这样在edit调用vim编辑时,可以利用vimsyntax高亮度显示sql的功能.

 

Cannot create save file "afiedt.buf"

 OracleSQL

在使用sqlplus的时候遇到了这个问题,记录以下解决方法,在glogin.sql中加入以下代码:

1              define _editor='vi' 

2             set editfile /home/oracle/afiedt.buf 

语句的编辑:

(1)SQL> edit  (默认的缓存文件 afiedt.buf)

(2)SQL> set editfile afiedt.sql  (修改的缓存文件 afiedt.sql)

      SQL> edit

      或者

      SQL> edit afiedt.sql

(3)SQL> define

DEFINE _EDITOR         = 'Notepad' (CHAR)  (默认的编辑器)

SQL> define _editor = 'PLSQLDev'

SQL> define

DEFINE _EDITOR         = 'PLSQLDev' (CHAR)  (修改的编辑器)

1.1.3.24    set pause

 

 pause {off(默认值)|on|text} 在显示报表时 控制终端滚动.在每一暂停时 必须按return.on将引起sqlplus在每一报表输出页开始时暂停.所指定的文本是每一次sqlplus暂停时显示的文本.如果要键入多个词 必须用单引号将文本括起来.

例:

 

C:\Users\Administrator>sqlplus telant/telant@sdh_cq_nm

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 12 9 18:58:43 2012

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

 

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> set pause on

SQL> set pause 'more ...'

SQL> select table_name from user_tables;

more ...

 

TABLE_NAME

------------------------------------------------------------

SYS_EXPORT_SCHEMA_19

XB_CARD_DELETE

YQ_OLT_GIS

LIJIA_CRM_TELANT_CODE_20120830

AAQ_W

ROUTE_TT

CROSS_TT

XB_SHELFTYPE_CHG

ZDW_BEIFEN_1129_2

WFW_DELE_CODESEG

WFW_ONT_HELP

more ...

 

TABLE_NAME

------------------------------------------------------------

XB_MIGRATIONRANGEDETAIL_BK

TEMP_ONU_LIST

ZDW_BEIFEN_0914_1

LIJIA_CRM_ALL

QQ_WW

XR_PRODINSRESSERVINSASSOC_BK

DEL_CDSLH_DZ

XR_PRODINSRESSERVINSASSOC_BK1

XB_PIRELATION_LHR

YQ_PROD_SYNC_GIS

ZDW_BEIFEN_1015_3

more ...


1.1.3.25    set define

 define             {& |c|off|on(默认值)}

define {& |c|off|on(默认值)} 设置在替换变量时所使用的字符.onoff控制sqlplus是否扫描替换变量的命令及用他们的值代替. defineonoff的设置控制scan变量的设置.

 

1:define(即host变量)

Host变量主要作用是起到一个替代变量的作用,是主机环境可以和oracle进行交互的一个媒介

通过define定义host变量的时候必须指定变量名和变量的值,如果变量名已经存在于host变量中,则自动覆盖,这个值不可以指定类型,一律按char存储。


定义的格式是:define variable_name = value(必须定义的时候就赋值,否则define variable_name是显示已经存在的host变量值,不存在会报告未定义。)   


另外可以使用define命令显示单个(define variable_name,不能显示多个)或全部(define)的host变量的值和类型(类型都是char)。

使用

首先要了解host变量只是在当前session环境中有效。了解对于host变量启用和关闭的命令是:set define on和set define off。这在sqlplus和plsql developer的command window中都可以使用,在sql或plsql中引用host变量,使用&符号,只是做一个简单的替换动作,比如

define x=TEST

Select * from ‘&x’;那么会报表找不到的错误,因为x被替换为test,那么’TEST’表是不存在的,TEST表存在,多了个单引号。

也可以不定义,直接在sql或plsql中在字符串前面加&符号,会提示你输入变量的值,然后替换。这种情况下是临时的变量,define命令查不到。


※经常使用host变量的场合是在写脚本的时候,脚本的有些地方经常变化,其他地方固定,那么可以使用&引用。


2,Variable(即绑定变量)

定义:

    绑定变量主要是在sql中使用,达到sql解析一次,执行多次,从而提高效率的目的。绑定变量和host变量一样,也有定义的,也有临时性的。(临时性的在动态sql或动态plsql中通过占位符和using使用),其他的如sql会自动使用绑定变量的情况,此处不专门讨论。定义的绑定变量也是在当前session中有效。


Sqlplus中可以使用大于等于3个字符表示一个命令,这里我们用var,var命令是声明一个绑定变量,只能给予名称和类型,定义的时候不能赋值,赋值可以在plsql中或者采用函数赋值(而host变量定义的时候必须赋值)。

Var var_name type   声明一个指定类型的绑定变量,类型上面列表中已经列出。


对于var或var var_name只是显示所有的绑定变量或者指定名称的绑定变量的name和type,不显示其值,显示其值用print命令,可以采用help print查看。


Print是输出所有绑定变量的值,print name1 name2 ….是输出指定的绑定变量的值,多个用空格分割。对于host变量的define要么输出全部,要么输出单个,没有指定数目的。Print后面的绑定变量名也可以加前缀冒号,效果一样。


例:

使用:

1.        绑定变量在sql和plsql中直接引用必须加前缀 :。如要引用绑定变量a,则是 :a。

2.        在真正运行的PLSQL程序中,比如自动运行,有自己的一套机制。

3.        初始化和应用绑定变量,初始化定义的绑定变量,可以使用过程和函数,其中过程可以内部给绑定变量赋值、也可以参数是绑定变量,参数模式为out返回。使用函数和过程差不多,还可以使用call 函数来赋值,另外还可以使用SQLPLUS中的execute命令直接赋值,多个绑定变量用分号隔开。

4.        注意NULL值不可赋值给绑定变量,这在NDS中也成立。


使用过程和sqlplus命令初始化绑定变量:



WORKGROUP\DINGJUN-PC>begin

  2  :a := 1;

  3  end;

  4  /


PL/SQL 过程已成功完成。

WORKGROUP\DINGJUN-PC>print a


         A

--------------------------------------

         1


WORKGROUP\DINGJUN-PC>select :a from dual;


        :A

---------------------------------------

         1


###使用execute初始化,初始化多个用分号隔开

SQL> var x number;

SQL> var y number;

SQL> exec :x :=1; :y :=2;

PL/SQL procedure successfully completed

x

---------

1

y

---------

2


下面看下NULL值赋值给绑定变量,会报错

WORKGROUP\DINGJUN-PC>exec :a:='aa',:b:=null;

BEGIN :a:='aa',:b:=null; END;


再如下面的例子,使用过程返回绑定变量,定义一个Var x number;



WORKGROUP\DINGJUN-PC>var x number;

WORKGROUP\DINGJUN-PC>Create or replace procedure pt( m out number)

  2   As

  3  Begin

  4  m:=10;

  5  End;

  6  /


过程已创建。


WORKGROUP\DINGJUN-PC>exec pt(m =>:x);


PL/SQL 过程已成功完成。


WORKGROUP\DINGJUN-PC>print x


         X

-------------------------

        10


绑定变量是REFCURSOR类型。一个参数使用ref cursor,通过绑定变量类型定义为REFCURSOR,然后传入过程,打印绑定变量(效果和查询语句一样)。


WORKGROUP\DINGJUN-PC>var x refcursor;

WORKGROUP\DINGJUN-PC>create or replace procedure pt(cur out SYS_REFCURSOR)

  2  AS

  3   BEGIN

  4      OPEN cur for select *  from test where rownum<3;

  5  END;

  6  /

过程已创建。


WORKGROUP\DINGJUN-PC>exec pt(cur =>:x);

PL/SQL 过程已成功完成。

WORKGROUP\DINGJUN-PC>print x

SJ           ID

---- ----------

01            1

02            2


由上面可以知道,print可以直接把refcursor的结果打印出来,不需要迭代查找。

下面看看如何用函数初始化定义的绑定变量:

WORKGROUP\DINGJUN-PC>create or replace function concatestring(a in varchar2, b in varchar2) return varchar2

  2  as

  3  c varchar2(100);

  4  begin

  5  c := a||b;

  6  return c;

  7  end;

  8  /


函数已创建。


WORKGROUP\DINGJUN-PC>variable x varchar2(10);

WORKGROUP\DINGJUN-PC>call concatestring('a','b') into :x;


调用完成。


WORKGROUP\DINGJUN-PC>print x


X

----------------------------------------------------------------

ab


当然也可以将函数的参数定义为out模式来初始化,我们这里使用call命令调用函数把结果传给绑定变量,调用格式为:call function(参数列表) into :绑定变量。


pl/sql中的参数和定义的变量(包括全局变量和临时变量)都会内部转为绑定变量,所以尽量在pl/sql中尽量使用静态sql,而不要使用动态sql,如果使用动态sql,要尽量加上绑定变量。


绑定变量的基本作用


绑定变量主要是sql的执行过程中,在解析sql之后会进行共享池(SGA)的检查,看优化器有没有分析优化过这个sql,环境必须完全一致才可以(包括大小写的一致,session情况一致等)。那么可以达到一次分析,多次执行的目的,这就是软解析,否则要进过解析,优化,行资源生成等一系列sql执行的过程,因为sql优化需要耗费很多资源,如果硬解析,sql性能会下降。




看SGA中的sql是否是软解析被调用多次,可以查看v$sql或v$sqlarea视图,查看列sql_text,executions,如:

select sql_text,executions from v$sql where sql_text like '%trademark%';


SQL_TEXT        EXECUTIONS

select * from trademark where id=:tid        6

1Oracle默认开启的服务

OracleDBConsoleorcl

OracleVssWriterORCL

OracleMTSRecoveryService

OracleOraDb11g_home1TNSListener

OracleServiceORCL

2SQL *PLUS命令

  HELP [topic]:查看命令的使用方法

  HOST:使用该命令可以从SQL*PLUS环境切换到操作系统环境,使用EXIT命令重新返回SQL*PLUS

  HOST 操作系统命令:执行操作系统命令

  CLEAR SCR[EEN]:清除屏幕内容

  SHOW   ALL:查看SQL*PLUS的所有系统变量值信息

  SHOW USER:显示当前哪个用户在使用SQL*PLUS

  SHOW SGA:显示SGA大小

  SHOW REL[EASE]:显示数据库版本信息

  SHOW ERRORS:显示详细的错误信息

  SHOW PARAMETERS:查看系统初始化参数信息

  DESC[RIBE]:查看对象结构

3SQL*PLUS语句

  A[PPEND] text:将text附加到当前行之后

  C[HANGE] /old/new:将当前行中的old替换为new

  C[HANGE] /text/:删除当前行中指定的text文本

  C[LEAR] BUFF[ER]:清除缓存区中的所有行

  I[NPUT]:插入不定数量的命令行

  I[NPUT] text:插入指定的文本text

  DEL:删除当前行

  DEL n:删除第n行,行号从1开始

  DEL m n:删除第m行到第n行之间的命令行

  L[IST]:列出缓冲区中的所有行

  L[IST] n:列出第n

  R[UN]/:显示缓冲区中保存的语句,并运行这些语句

  n:将第n行作为当前行

  n text:使用text代替第n行信息

  0 text:在第一行之前插入text文本

4、保存缓冲区和读取文件到缓冲区

  保存:save filename

  读取:get filename list|nolist

5、使用START命令读取并运行文件内容

  start { url | filename }

6、使用EDIT命令编辑缓冲区内容或文件内容

  ED[IT] [ filename ]

7、使用SPOOL命令复制输出结果到文件

  SPO[OL] [ filename [ CRE[ATE]  | REP[LACE] | APP[END] ] | OFF | OUT ]

8、使用临时变量

  使用&符号表示临时变量,多次出现需要多次输入

  使用&&符号表示临时变量,重复出现,不需要重复输入

  使用SET VERIFY [ ON | OFF ]来指定是否输出原值和新值信息(须在执行SQL语句之前执行)

  使用SET DEFINE 来指定一个除字符&之外的字符,作为定义变量的字符

  在脚本文件中使用临时变量

9、如果文件夹名称中含有空格,需要用引号将@命令之后的内容包围起来

10、使用已定义的变量

  已定义的变量是指具有明确定义的变量,该变量的值会一直保留到显式的被删除、重定义或者退出SQL*PLUS为止

  1DEFINE命令:定义变量

     DEFINE:查询所有已定义的变量

    DEFINE ariable:显示指定变量的名称、值和类型

    DEFINE ariable = value:创建一个char类型的用户变量、并且为该变量赋初始值

  2UNDEFINE:删除变量

  3ACCEPT命令:定义变量,并且定制一个用户提示,用于提示用户输入指定变量的数据

    accept variable [ data_type ] [ format format ] [ default default ] [ prompt text | noprompt ] [  hide]

11、格式化查询结果:格式化命令设置后,该命令一直起作用,直到会话结束或者下一个格式化命令的设置,每一次报表结束之后,重新设置SQL*PLUS的默认值,如果为某个列指定了别名,那么必须引用该别名,而不能使用列名

 

 

 在oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, 一种叫做硬解析,一种叫做软解析.

一个硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤.硬解释不仅仅耗费大量的cpu,更重要的是会占据重要的们闩(latch)资源,严重的影响系统的规模的扩大(即限制了系统的并发行),而且引起的问题不能通过增加内存条和cpu的数量来解决。之所以这样是因为门闩是为了顺序访问以及修改一些内存区域而设置的,这些内存区域是不能被同时修改。当一个sql语句提交后,oracle会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进行硬分析。

 而唯一使得oracle 能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样。



1.

sqlplus中如何使用绑定变量,可以通过variable来定义

[c-sharp]view plaincopyprint?

select * from tt where id=1; 

2   

3 ID NAME 

4 ---------- ---------------------------------------- 

5 1 test 

6   

7 SQL> select * from tt where id=2; 

8   

9 ID NAME 

10            ---------- ---------------------------------------- 

11            2 test 

12              

13            SQL> variable i number; 

14            SQL> exec :i :=1; 

15              

16            PL/SQL 过程已成功完成。 

17              

18            SQL> select *from tt where id=:i; 

19              

20            ID NAME 

21            ---------- ---------------------------------------- 

22            1 test 

23              

24            SQL> exec :i :=2; 

25              

26            PL/SQL 过程已成功完成。 

27              

28            SQL> select *from tt where id=:i; 

29              

30            ID NAME 

31            ---------- ---------------------------------------- 

32            2 test 

33              

34            SQL> print i; 

35              

36            I 

37            ---------- 

38            2 

39              

40            SQL> select sql_text,parse_calls from v$sql where sql_text like 'select * from t 

41            t where id=%'; 

42              

43            SQL_TEXT PARSE_CALLS 

44            ------------------------------------------------------------ ----------- 

45            select * from tt where id=2 1 

46            select * from tt where id=1 1 

47            select * from tt where id=:i 2 

48            SQL> 


从上面试验发现绑定变量i的使用使查询id=1和id=2的sqlselect *from tt where id=:i得以重复

使用,从而避免了hard parse,这里的PARSE_CALLS=2包括了一次soft parse



2.

前两天看到有人在pub上问sqlplus中通过definevariable定义的变量的区别。其实define定义的我


理解不是变量而是字符常量,通过define定义之后,在通过&或者&&引用的时候不需要输入了,仅此而已。


oracle在执行的时候自动用值进行了替换;而variable定义的是绑定变量,上面已经提到。


[c-sharp]view plaincopyprint?

49            C:>sqlplus xys/manager 

50            SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4月 1 14:03:00 2008 

51            Copyright (c) 1982, 2007, Oracle. All rights reserved. 

52              

53            连接到: 

54            Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production 

55            With the Partitioning, OLAP, Data Mining and Real Application Testing options 

56            SQL> define 

57            DEFINE _DATE = "01-4月 -08" (CHAR) 

58            DEFINE _CONNECT_IDENTIFIER = "db11" (CHAR) 

59            DEFINE _USER = "XYS" (CHAR) 

60            DEFINE _PRIVILEGE = "" (CHAR) 

61            DEFINE _SQLPLUS_RELEASE = "1101000600" (CHAR) 

62            DEFINE _EDITOR = "Notepad" (CHAR) 

63            DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.1.0. 

64            6.0 - Production 

65            With the Partitioning, OLAP, Data Mining and Real Application Testing options" ( 

66            CHAR) 

67            DEFINE _O_RELEASE = "1101000600" (CHAR) 

68            SQL> select *from tt; 

69            ID NAME 

70            ---------- ---------- 

71            1 a 

72            2 a 

73            3 "abc" 

74            SQL> define a 

75            SP2-0135: 符号 a 未定义 

76            SQL> define a=1 

77            SQL> define 

78            DEFINE _DATE = "01-4月 -08" (CHAR) 

79            DEFINE _CONNECT_IDENTIFIER = "db11" (CHAR) 

80            DEFINE _USER = "XYS" (CHAR) 

81            DEFINE _PRIVILEGE = "" (CHAR) 

82            DEFINE _SQLPLUS_RELEASE = "1101000600" (CHAR) 

83            DEFINE _EDITOR = "Notepad" (CHAR) 

84            DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.1.0. 

85            6.0 - Production 

86            With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) 

87            DEFINE _O_RELEASE = "1101000600" (CHAR) 

88            DEFINE A = "1" (CHAR) 

89            --通过上面显示define定义的应该是字符(串)常量。 

90            SQL> select * from tt where id=&a; 

91            原值 1: select * from tt where id=&a 

92            新值 1: select * from tt where id=1 

93            ID NAME 

94            ---------- ---------- 

95            1 a 

96            SQL> select * from tt where id=&&a; 

97            原值 1: select * from tt where id=&&a 

98            新值 1: select * from tt where id=1 

99            ID NAME 

100         ---------- ---------- 

101         1 a 

102         SQL> define b='a'; 

103         SQL> define 

104         DEFINE _DATE = "01-4月 -08" (CHAR) 

105         DEFINE _CONNECT_IDENTIFIER = "db11" (CHAR) 

106         DEFINE _USER = "XYS" (CHAR) 

107         DEFINE _PRIVILEGE = "" (CHAR) 

108         DEFINE _SQLPLUS_RELEASE = "1101000600" (CHAR) 

109         DEFINE _EDITOR = "Notepad" (CHAR) 

110         DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.1.0. 

111         6.0 - Production 

112         With the Partitioning, OLAP, Data Mining and Real Application Testing options" ( 

113         CHAR) 

114         DEFINE _O_RELEASE = "1101000600" (CHAR) 

115         DEFINE A = "1" (CHAR) 

116         DEFINE B = "a" (CHAR) 

117           

118         --如果是字符类型那么在引用时别忘了加上单引号,另外通过define定义之后在引用时不需要输入了。 

119         SQL> select * from tt where name=&&b; 

120         原值 1: select * from tt where name=&&b 

121         新值 1: select * from tt where name=a 

122         select * from tt where name=a 

123         * 

124         第 1 行出现错误: 

125         ORA-00904: "A": 标识符无效 

126           

127         SQL> select * from tt where name='&&b'; 

128         原值 1: select * from tt where name='&&b' 

129         新值 1: select * from tt where name='a' 

130         ID NAME 

131         ---------- ---------- 

132         1 a 

133         2 a 

134         SQL> select * from tt where name='&b'; 

135         原值 1: select * from tt where name='&b' 

136         新值 1: select * from tt where name='a' 

137         ID NAME 

138         ---------- ---------- 

139         1 a 

140         2 a 

141         --执行sql时进行了替换 

142         SQL> select sql_text from v$sql where sql_text like 'select * from tt where name 

143         =%'; 

144         SQL_TEXT 

145         -------------------------------------------------------------------------------- 

146         select * from tt where name=1 

147         select * from tt where name='a' 

148         SQL> 

 

 



3.

oracle在解析sql时会把plsql中定义的变量转为为绑定变量

[c-sharp]view plaincopyprint?

149         SQL> create table tt(id int , name varchar2(10)); 

150           

151         表已创建。 

152           

153         SQL> alter session set sql_trace=true

154           

155         会话已更改。 

156           

157         SQL> declare 

158         2 begin 

159         3 for i in 1..100 loop 

160         4 insert into tt values(i,'test'); 

161         5 end loop; 

162         6 commit; 

163         7 end; 

164         8 / 

165           

166         PL/SQL 过程已成功完成。 

167           

168         SQL> alter session set sql_trace=false

169         --trace file: 

170         ===================== 

171         PARSING IN CURSOR #3 len=90 dep=0 uid=31 oct=47 lid=31 tim=7109565004 hv=962259239  

172           

173         ad='668ec528' 

174         declare 

175         begin 

176         for i in 1..100 loop 

177         insert into tt values(i,'test'); 

178         end loop; 

179         commit; 

180         end; 

181         END OF STMT 

182         PARSE #3:c=15625,e=5678,p=0,cr=3,cu=0,mis=1,r=0,dep=0,og=1,tim=7109564996 

183         ===================== 

184         PARSING IN CURSOR #5 len=34 dep=1 uid=31 oct=2 lid=31 tim=7109565520 hv=1299226876  

185           

186         ad='66869934' 

187         INSERT INTO TT VALUES(:B1 ,'test') 

188         END OF STMT 

189         PARSE #5:c=0,e=226,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,tim=7109565513 

190         ===================== 


另外从hard parse的数据量上其实也可以大致猜测oracle会把plsql中定义的变量转换为绑定变量处理

[c-sharp]view plaincopyprint?

191         SQL> connect /as sysdba 

192         已连接。 

193         SQL> shutdown immediate 

194         数据库已经关闭。 

195         已经卸载数据库。 

196         ORACLE 例程已经关闭。 

197         SQL> startup 

198         ORACLE 例程已经启动。 

199           

200         Total System Global Area 167772160 bytes 

201         Fixed Size 1247900 bytes 

202         Variable Size 67110244 bytes 

203         Database Buffers 96468992 bytes 

204         Redo Buffers 2945024 bytes 

205         数据库装载完毕。 

206         数据库已经打开。 

207         SQL> connect xys/manager 

208         已连接。 

209         SQL> drop table tt; 

210           

211         表已删除。 

212           

213         SQL> create table tt(id int , name varchar2(10)); 

214           

215         表已创建。 

216         SQL> col name format a30 

217         SQL> select a.*,b.name 

218         2 from v$sesstat a , v$statname b 

219         3 where a.statistic#=b.statistic# 

220         4 and a.sid=(select distinct sid from v$mystat) 

221         5 and b.name like '%parse%'; 

222           

223         SID STATISTIC# VALUE NAME 

224         ---------- ---------- ---------- ------------------------------ 

225         159 328 39 parse time cpu 

226         159 329 74 parse time elapsed 

227         159 330 339 parse count (total) 

228         159 331 165 parse count (hard) 

229         159 332 0 parse count (failures) 

230           

231         SQL> declare 

232         2 begin 

233         3 for i in 1..100 loop 

234         4 insert into tt values(i,'test'); 

235         5 end loop; 

236         6 commit; 

237         7 end; 

238         8 / 

239           

240         PL/SQL 过程已成功完成。 

241           

242         SQL> select a.*,b.name 

243         2 from v$sesstat a , v$statname b 

244         3 where a.statistic#=b.statistic# 

245         4 and a.sid=(select distinct sid from v$mystat) 

246         5 and b.name like '%parse%' 

247         6 / 

248           

249         SID STATISTIC# VALUE NAME 

250         ---------- ---------- ---------- ------------------------------ 

251         159 328 39 parse time cpu 

252         159 329 74 parse time elapsed 

253         159 330 345 parse count (total) 

254         159 331 167 parse count (hard) 

255         159 332 0 parse count (failures) 

256           

257         SQL> 

 

 

这里发现hard parse只增加了2,如果没有使用绑定变量的话,相信hard parse会更多



4.

过程中的参数会自动转化为绑定变量

[c-sharp]view plaincopyprint?

258         SQL> edit 

259         已写入 file afiedt.buf 

260           

261         1 create or replace procedure proc_test(p_id int, p_name varchar2) 

262         2 is 

263         3 begin 

264         4 insert into tt values(p_id , p_name); 

265         5 commit; 

266         6* end; 

267         SQL> / 

268           

269         过程已创建。 

270           

271         SQL> alter session set sql_trace=true

272           

273         会话已更改。 

274           

275         SQL> exec proc_test(200,'test'); 

276           

277         PL/SQL 过程已成功完成。 

278           

279         SQL> alter session set sql_trace=false

280           

281         会话已更改。 

282         --trace file: 

283         alter session set sql_trace=true 

284         END OF STMT 

285         EXEC #3:c=0,e=749,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=7393908487 

286         ===================== 

287         PARSING IN CURSOR #1 len=35 dep=0 uid=31 oct=47 lid=31 tim=7403000735 hv=526484776  

288           

289         ad='6687b0b8' 

290         BEGIN proc_test(200,'test'); END; 

291         END OF STMT 

292         PARSE #1:c=0,e=2584,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=7403000727 

293         ===================== 

294         PARSING IN CURSOR #6 len=33 dep=1 uid=31 oct=2 lid=31 tim=7403001293 hv=2874748229  

295           

296         ad='668e9cd8' 

297         INSERT INTO TT VALUES(:B2 , :B1 ) 

298         END OF STMT 

299         PARSE #6:c=0,e=246,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,tim=7403001286 

300         ===================== 

 

 

另外也可以直观的观察:


[c-sharp]view plaincopyprint?

301         SQL> exec proc_test(200,'test'); 

302           

303         PL/SQL 过程已成功完成。 

304           

305         SQL> select sql_text from v$sql where sql_text like '%proc_test%'; 

306           

307         SQL_TEXT 

308         -------------------------------------------------------------------------------- 

309         BEGIN proc_test(200,'test'); END; 

310           

311         SQL> 

 

 

在sqlplus里执行过程不能观察出来

下面在plsql developer执行一次过程之后再来看执行的情况


[c-sharp]view plaincopyprint?

312         SQL> select sql_text from v$sql where sql_text like '%proc_test%'; 

313           

314         SQL_TEXT 

315         -------------------------------------------------------------------------------- 

316         begin -- Call the procedure proc_test(p_id =>:p_id, p_name =>:p_name); end; 

317           

318         SQL> 

 

 

很显然oracle在执行过程时把参数转化为绑定变量了,其实从plsql developer中执行过程时的语法就能


看出来:


[c-sharp]view plaincopyprint?

319         begin 

320         -- Call the procedure 

321         proc_test(p_id => :p_id, 

322         p_name => :p_name); 

323         end; 


在输入参数列表框上面的执行语法就是这样的。




5.

在动态sql中使用绑定变量,动态sql中使用绑定变量非常明显也容易理解,下面给出2个简单的例子


[c-sharp]view plaincopyprint?

324         SQL> set serveroutput on 

325         SQL> declare 

326            2   v_string varchar2(100); 

327            3   v_id tt.id%type ; 

328            4   v_name tt.name%type ; 

329            5   begin 

330            6   v_string:='select * from tt where id=:v_id'; 

331            7   execute immediate v_string into v_id , v_name using &a; 

332            8   dbms_output.put_line(v_id||' '||v_name) ; 

333            9   end; 

334         10   / 

335         输入 a 的值:   1 

336         原值 7: execute immediate v_string into v_id , v_name using &a; 

337         新值 7: execute immediate v_string into v_id , v_name using 1; 

338         1 test 

339           

340         PL/SQL 过程已成功完成。 

341           

342         SQL> declare 

343            2   v_string varchar2(100); 

344            3   v_id tt.id%type; 

345            4   v_name tt.name%type ; 

346            5   begin 

347            6   v_string:='insert into tt values(:id,:name)'; 

348            7   execute immediate v_string using &id,&name ; 

349            8   end; 

350            9   / 

351         输入 id 的值:   1000 

352         输入 name 的值:   'test' 

353         原值 7: execute immediate v_string using &id,&name ; 

354         新值 7: execute immediate v_string using 1000,'test' ; 

355           

356         PL/SQL 过程已成功完成。 

357           

358         SQL> select * from tt where id=1000; 

359           

360                ID NAME 

361         ---------- ---------- 

362            1000 test 

363           

364         SQL> 

 

 


=============================下面加上一些其他变量的使用方法=========================


eg001&替换变量)

[c-sharp]view plaincopyprint?

365         SQL> select xh,xm from system.xs where zym='&zym'; 

366         输入 zym 的值:  计算机 

367         原值    1: select xh,xm from system.xs where zym='&zym' 

368         新值    1: select xh,xm from system.xs where zym='计算机' 

369           

370         XH     XM 

371         ------ -------- 

372         061101 王林 

373         061102 程明 

374         061103 王燕 

375         061104 韦严平 

376         061106 李方方 

377         061107 李明 

378         061108 林一帆 

379         061109 张强民 

380         061110 张蔚 

381         061111 赵琳 

382         061113 严红 

383           

384         已选择11行。 

385           

386         SQL> edit 

387         已写入 file afiedt.buf 

388           

389           1  select xh 学号,xm 姓名,avg(cj) as 平均成绩 

390           2* from system.xs_xkb group by xh,xm 

391         SQL> / 

392           

393         学号   姓名       平均成绩 

394         ------ -------- ---------- 

395         061103 王燕             71 

396         061210 李红庆           76 

397         061110 张蔚     91.3333333 

398         061220 吴薇华           82 

399         061104 韦严平   79.6666667 

400         061101 王林             78 

401         061204 马林林           91 

402         061106 李方方           72 

403         061218 孙研             70 

404         061102 程明             78 

405         061241 罗林琳           90 

406           

407         学号   姓名       平均成绩 

408         ------ -------- ---------- 

409         061111 赵琳           80.5 

410         061109 张强民         76.5 

411         061216 孙祥欣           81 

412         061221 刘燕敏           79 

413           

414         已选择15行。 

415           

416         SQL> select * from system.xs_xkb where cj>=&cj; /*替换变量可以使用WHERE子句;ORDER BY子句;列表达式;表名;整个SELECT语句*/ 

417         输入 cj 的值:  90 

418         原值    1: select * from system.xs_xkb where cj>=&cj 

419         新值    1: select * from system.xs_xkb where cj>=90 

420           

421         SQL> select xs.xh,&name,kcm,&column 

422           2  from system.xs,&kc,system.xs_kc 

423           3  where xs.xh=xs_kc.xh and &condition 

424           4  and kcm=&kcm 

425           5  order by & column; 

426         输入 name 的值:  xm 

427         输入 column 的值:  cj 

428         原值    1: select xs.xh,&name,kcm,&column 

429         新值    1: select xs.xh,xm,kcm,cj 

430         输入 kc 的值:  system.kc 

431         原值    2: from system.xs,&kc,system.xs_kc 

432         新值    2: from system.xs,system.kc,system.xs_kc 

433         输入 condition 的值:  kc.kch=xs_kc.kch 

434         原值    3: where xs.xh=xs_kc.xh and &condition 

435         新值    3: where xs.xh=xs_kc.xh and kc.kch=xs_kc.kch 

436         输入 kcm 的值:  '离散数学' 

437         原值    4: and kcm=&kcm 

438         新值    4: and kcm='离散数学' 

439         输入 column 的值:  cj 

440         原值    5: order by & column 

441         新值    5: order by cj 

442           

443         XH     XM       KCM    CJ 

444         ------ -------- ---------------- ---------- 

445         061104 韦严平   离散数学                 65 

446         061109 张强民   离散数学                 70 

447         061101 王林     离散数学                 76 

448         061102 程明     离散数学                 78 

449         061106 李方方   离散数学                 80 

450         061103 王燕     离散数学                 81 

451         061110 张蔚     离散数学                 89 

 

 

eg002&&替换变量)

[c-sharp]view plaincopyprint?

452         --&&替换变量系统一直用同一个值处理,清除用undefine 变量名清除 

453         SQL> edit 

454         已写入 file afiedt.buf 

455           

456           1  select xs.xh,&name,kcm,&&column   /*清除替换变量(undefine column)*/ 

457           2  from system.xs,&kc,system.xs_kc 

458           3  where xs.xh=xs_kc.xh and &condition 

459           4  and kcm=&kcm 

460           5* order by &column 

461         SQL> / 

462         输入 name 的值:  xm 

463         输入 column 的值:  cj 

464         原值    1: select xs.xh,&name,kcm,&&column 

465         新值    1: select xs.xh,xm,kcm,cj 

466         输入 kc 的值:  system.kc 

467         原值    2: from system.xs,&kc,system.xs_kc 

468         新值    2: from system.xs,system.kc,system.xs_kc 

469         输入 condition 的值:  kc.kch=xs_kc.kch 

470         原值    3: where xs.xh=xs_kc.xh and &condition 

471         新值    3: where xs.xh=xs_kc.xh and kc.kch=xs_kc.kch 

472         输入 kcm 的值:  '离散数学' 

473         原值    4: and kcm=&kcm 

474         新值    4: and kcm='离散数学' 

475         原值    5: order by &column             /*使用&&替换变量的好处,相同变量只输第一次就OK*/ 

476         新值    5: order by cj 

477           

478         XH     XM       KCM    CJ 

479         ------ -------- ---------------- ---------- 

480         061104 韦严平   离散数学                 65 

481         061109 张强民   离散数学                 70 

482         061101 王林     离散数学                 76 

483         061102 程明     离散数学                 78 

484         061106 李方方   离散数学                 80 

485         061103 王燕     离散数学                 81 

486         061110 张蔚     离散数学                 89 

487           

488         已选择7行。 

eg003

DEFINE[variable[=value]]

UNDEFINE清除定义的变量

[c-sharp]view plaincopyprint?

489         SQL> define specialty=通信工程 

490         SQL> define specialty 

491         DEFINE SPECIALTY       = "通信工程" (CHAR) 

492         SQL> select xh,xm,xb,cssj,zxf from system.xs 

493           2  where zym='&specialty'; 

494           

495         XH     XM       XB CSSJZXF 

496         ------ -------- -- -------------- ---------- 

497         061202 王林     男 29-10月-85             40 

498         061210 李红庆   女 01-5月 -85             44 

499         061201 王敏     男 10-6月 -84             42 

500         061203 王玉民   男 26-3月 -86             42 

501         061204 马林林   女 10-2月 -84             42 

502         061206 李计     女 20-9月 -85             42 

503         061216 孙祥欣   女 09-3月 -84             42 

504         061218 孙研     男 09-10月-86             42 

505         061220 吴薇华   女 18-3月 -86             42 

506         061221 刘燕敏   女 12-11月-85             42 

507         061241 罗林琳   女 30-1月 -86             50 

508           

509         已选择11行。 

 

 

eg004

ACCEPT variable[datatype[NUMBER|CHAR|DATE]][FORMAT format][PROMPT text][HIDE]/*variable:指定接收值的变量。该名称的变量不存在,那么SQL重建该变量;datatype:变量数据类型,默认为CHAR*/

[c-sharp]view plaincopyprint?

510         SQL> accept num prompt'请输入课程号:' 

511         请输入课程号:101 

512         SQL> set verify on 

513         SQL>  

514           1  select xh,kcm,cj from system.xs_kc,system.kc 

515           2  where xs_kc.kch=kc.kch and kc.kch='&num' 

516           3* order by cj 

517         SQL> / 

518         原值    2: where xs_kc.kch=kc.kch and kc.kch='&num' 

519         新值    2: where xs_kc.kch=kc.kch and kc.kch='101' 

520           

521         XH     KCM    CJ 

522         ------ ---------------- ---------- 

523         061103 计算机基础               62 

524         061106 计算机基础               65 

525         061218 计算机基础               70 

526         061210 计算机基础               76 

527         061221 计算机基础               79 

528         061101 计算机基础               80 

529         061216 计算机基础               81 

530         061220 计算机基础               82 

531         061241 计算机基础               90 

532         061104 计算机基础               90 

533         061111 计算机基础               91 

534           

535         XH     KCM    CJ 

536         ------ ---------------- ---------- 

537         061204 计算机基础               91 

538         061110 计算机基础               95 

539           

540         已选择13行。 

541           

542         SQL> 

 

 

 

 

1.1.3.26    undefine

105.用于清除替代变量的定义

undefine variable ...

1.1.3.27   修改命令提示符

 

 

glogin.sqlSQL*Plus全局登录的的配置文件,是Oracle自带的登录脚本文件,它的路径是固定的,即$ORACLE_HOME/sqlplus/admin。当用户启动SQL*Plus的时候,会从这个固定的路径加载glogin.sql

可以在glogin.sql文件中添加如下的内容:

SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER> "

这样,每次登录SQL*Plus的时候,SQL提示符就会变为设置的内容,假设用户为SYS,数据库为lhrdb,则提示符如下所示:

SQL> SHOW SQLPROMPT

sqlprompt "SQL> "

SQL> SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER> "

SYS@lhrdb>

SYS@lhrdb> SHOW SQLPROMPT

sqlprompt "_user'@'_connect_identifier> "

注意,以上提示符的“>”后有一个空格。

 

1.1.3.28    其它

 其中系统变量及其可选值如下:

   arraysize          {20(默认值)|n}

   autocommit         {off(默认值)|on|immediate}

   blockterminator    {.(默认值)|c}

   cmdsep             { |c|off(默认值)|on}

   compatibility      {v5|v6|v7|native(默认值)}

   concat             {.(默认值)|c|off|on(默认值)}

   copycommit         {0(默认值)|n}

   crt crt             


   echo                 {off|on}

   embedded             {off(默认值)|on}

   escape             {\(默认值)|c|off(默认值)|on}

   feedback           {6(默认值)|n|off|on}

   flush              {off|on(默认值)}

   heading            {off|on(默认值)}

   headsep            {|(默认值)|c|off|on(默认值)}

   linesize           {80(默认值)|n}

   long                 {80(默认值)|n}

   longchunksize      {80(默认值)|n}

   maxdata            n

   newpage            {1(默认值)|n}

   null text

   numformat          格式

   numwidth           {10(默认值)|n}

   pagesize           {14(默认值)|n}

   pause              {off(默认值)|on|text}

   recsep               {wrapped(默认值)|each|off}

   recsepchar           { |c}

   scan                 {off|on(默认值)}

   serveroutput       {off|on} size n

   showmode           {off(默认值)|on}

   space              {1(默认值)|n}

   sqlcase            {mixed(默认值)|lower|upper}

   sqlcontinue        {>  (默认值)|文本}

   sqlnumber          {off|on(默认值)}

   sqlperfix          {#(默认值)|c}

   sqlprompt          {sql>  (默认值)|文本}

   sqlterminator      { (默认值)|c|off|on(默认值)}

   suffix             {sql(默认值)|文本}

   tab{off|on(默认值)}

   termout            {off|on(默认值)}

   time               {off(默认值)|on}

   timing             {off(默认值)|on}

   trimout            {off|on(默认值)}

   underline          {-(默认值)|c|off|on(默认值)}

   verify             {off|on(默认值)}

   wrap               {off|on(默认值)}

 系统变量说明:

   arraysize {20(默认值)|n} 置一批的行数 是sqlplus一次从数据库获取的行数 有效值为1至5000. 大的值可提高查询和子查询的有效性 可获取许多行 但也需要更多的内存.当超过1000时 其效果不大.

   autocommit {off(默认值)|on|immediate} 控制oracle对数据库的修改的提交. 置on时 在oracle执行每个sql命令或pl/sql块后对数据库提交修改 置off时则制止自动提交 需要手工地提交修改 例如用sql的commit命令. immediate功能同on.

   blockterminator {.(默认值)|c} 置非字母数字字符 用于结束pl/sql块.要执行块时 必须发出run命令或/命令.

   cmdsep { |c|off(默认值)|on} 置非字母数字字符 用于分隔在一行中输入的多个sql/plus命令.on或off控制在一行中是否能输入多个命令. on时将自动地将命令分隔符设为分号(.其中c表示所置字符.

   compatibility {v5|v6|v7|native(默认值)} 指定当前所链接的oracle版本.如果当前oracle的版本为5 则置compatibility为v5  为版本6时置成v6  为版本7时置成v7. 如果希望由数据库决定该设置 在置成native.

   concat {.(默认值)|c|off|on(默认值)}设置结束一替换变量引用的字符.在中止替换变量引用字符之后可跟所有字符 作为体会组成部分 否则sqlplus将解释为替换变量名的一部分.当concat开关为on时 sqlplus可重置concat的值为点(.).

   copycommit {0(默认值)|n} 控制copy命令提交对数据库修改的批数.每次拷贝n批后 将提交到目标数据库.有效值为0到5000. 可用变量arraysize设置一批的大小.如果置copycommit为0 则仅在copy操作结束时执行一次提交.

   crt crt  改变sqlplus runform命令使用的缺省crt文件.如果置crt不包含什么 则crt仅包含' ' ' ' .如果在一个form的系统调用期间 要使用new.crt(缺省crt是old.crt) 可按下列形式调用form:

     sql>  runform -c new form名

     或者

     sql>  set crt new

     sql>  runform form名

 第二中方法存储crt选择 以致在下次运行runform命令(是在同一次sqlplus交互中)时 不需要指定.


   echo {off|on} 控制start命令是否列出命令文件中的每一命令.为on时 列出命令 为off时 制止列清单.

   embedded {off(默认值)|on} 控制每一报表在一页中开始的地方. 为off时 迫使每一报表是在新页的顶部开始 为on时 运行一报表在一页的任何位置开始.


   escape {\(默认值)|c|off(默认值)|on} 定义作为escape字符的字符.为off时 使escape字符不起作用.为on时 使escape字符起作用.

   feedback {6(默认值)|n|off|on} 显示由查询返回的记录数.on和off置显示为开或关.置feedback为on时 等价于置n为1. 如果置feedback为0 等价于将它置成off.

   flush {off|on(默认值)} 控制输出送至用户的显示设备.为off时 运行操作系统做缓冲区输出 为on时 不允许缓冲. 仅当非交互方式运行命令文件时使用off 这样可减少程序i/o总是 从而改进性能.

   heading {off|on(默认值)} 控制报表中列标题的打印.为on时 在报表中打印列标题 为off时禁止打印列标题.

   headsep {|(默认值)|c|off|on(默认值)} 定义标题分隔字符.可在column命令中使用标题分隔符 将列标题分成多行.on和off将标题分隔置成开或关.当标题分隔为关(off)时 sqlplus打印标题分隔符像任何字符一样.

   linesize {80(默认值)|n} 置sqlplus在一行中显示的字符总数 它还控制在ttitle和btitle中对准中心的文本和右对齐文本. 可定义linesize为1至最大值 其最大值依赖于操作系统.

   long {80(默认值)|n} 为显示和拷贝long类型值的最大宽度的设置. 对于oracle7  n的最大值为2g字节 对于版本6 最大值为32767.

   longchunksize {80(默认值)|n} 为sqlplus检索long类型值的增量大小.由于内存的限制 可按增量检索 该变量仅应用于oracle7.


   maxdata n  置sqlplus可处理的最大行宽字符数 其缺省值和最大值在不同操作系统中是可变的.

   newpage {1(默认值)|n} 置每一页的头和顶部标题之间要打印的空行数.如果为0  在页之间送一换号符 并在许多终端上清屏.


   null text 设置表示空值(null)的文本 如果null没有文本 则显示空格(缺省时). 使用column命令中的null子句可控制null变量对该列的设置.

   numformat 格式  设置显示数值的缺省格式 该格式是数值格式.


   numwidth {10(默认值)|n} 对显示数值设置缺省宽度.


   pagesize {14(默认值)|n} 置从顶部标题至页结束之间的行数.在11英寸长的纸上打印报表 其值为54 上下各留一英寸(newpage值为6).



   recsep {wrapped(默认值)|each|off}

   recsepchar { |c}  指定显示或打印记录分行符的条件.一个记录分行符 是由recsepchar指定的字符组成的单行.空格为recsepchar的默认字符.

   recsep告诉sqlplus在哪儿做记录分隔.例如将recsep置成wrapped 在每一缠绕行之后 打印记录分行符.如果将recsep置成each sqlplus在每一行后打印一记录分行符.如果将recsep置成off  sqlplus不打印分行符.


   scan {off|on(默认值)} 控制对存在的替换变量和值的扫描.off禁止替换变量和值的处理  on则允许正常处理.


   serveroutput {off|on} size n 控制在sqlplus中的存储过程是否显示输出.off时为禁止  on时则显示输出. size设置缓冲输出的字节数 缺省值为2000  n不能小于2000或大于一百万.


   showmode {off(默认值)|on} 控制sqlplus在执行set命令时是否列出其新老值old或new的设置.

   space {1(默认值)|n}  设置输出列之间空格的数目 其最大值为10.


   sqlcase {mixed(默认值)|lower|upper}  先于执行之前 将sql命令和pl/sql块的大小写进行转换. sqlplus将转换命令中的全部文本 包括带引号的直接量和标示符.sqlcase不改变sql缓冲区本身.


   sqlcontinue {>  (默认值)|文本}  在一附加行上继续一sqlplus命令时 sqlplus以该设置的字符序列进行提示.


   sqlnumber {off|on(默认值)}  为sql命令和pl/sql块的第二行和后继行设置提示.为on时 提示行号 为off时 提示设置为sqlprompt的值.


   sqlperfix  {#(默认值)|c}  设置sqlplus前缀字符.在键入一sql命令或pl/sql块时 可在单独行上键入一sqlplus命令 由sqlplus的前缀字符做前缀. sqlplus直接执行该命令 不影响sql命令或pl/sql块.前缀字符必须是非字母数字字符.


   sqlprompt {sql>  (默认值)|文本}  设置sqlplus的命令提示符.


   sqlterminator { (默认值)|c|off|on(默认值)}  设置用于结束和执行sql命令的字符. off意味着sqlplus不识别命令终止符 用键入空行来结束sql命令. on重设置终止符为默认的分号(.


   suffix {sql(默认值)|文本}  设置缺省文件的后缀 sqlplus在命令中使用 来引用命令文件. suffix不控制输出(spool)文件的扩展名.


   tab {off|on(默认值)}  决定sqlplus在终端输出中如何格式化空白空间. 为off时 在输出中使用空格格式化空白空间 为on时 用tab字符. tab的缺省值依赖于系统 用show tab命令可查看该缺省值.


   termout {off|on(默认值)}  控制由文件执行命令所产生的输出的显示. off禁止显示 以致从一个命令文件假脱机输出 在屏幕上看不到输出. on时显示输出. termout off 不影响交互地进行命令的输出.


   time {off(默认值)|on}  控制当前日期的显示. on时 在每条命令提示前显示当前时间  off时禁止时间的显示.


   timing {off(默认值)|on}  控制时间统计的显示. on时 显示每一个运行的sql命令或pl/sql块的时间统计  off时 禁止每一个命令的时间统计.


   trimout {off|on(默认值)}  决定sqlplus在每一显示行的末端是否允许带空格. on时将每行尾部的空格去了 特别当从慢速的通信设备存取sqlplus时可改进性能  off时允许sqlplus显示尾部的空格.trimout on 不影响假脱机输出. 设置tab on时 sqlplus忽略trimout on.


   underline {-(默认值)|c|off|on(默认值)}  设置用在sqlplus报表中下划线列标题的字符. on或off将下划线置成开或关.


   verify {off|on(默认值)}  控制sqlplus用值替换前、后是否列出命令的文本. on时显示文本 off时禁止列清单.

   wrap {off|on(默认值)}  控制sqlplus是否截断数据项的显示. off时截断数据项 on时允许数据项缠绕到下一行. 在column命令中使用wrapped和truncated子句可控制对指定列的wrap的设置.

 

 

1.@

@[url|file_name] [arg]

 

2.@@

(类似@ 用法主要为在脚本文件中嵌套调用其他脚本文件)

 

3./

用于执行

select * from emp

.

/

 

4.accept (用于将输出值存储到替代变量)

acc variable ----->用于指定变量

[num char date binary_float binary_double  ]---->类型

for|format ---->输出格式

default|def ------>默认

prompt text | noprompt [hide] ----->指定提示文本 或 无提示默认 或者隐藏

accept hired date format 'dd-mm-yyyy' format '输入日期:'

accept pswd char format '口令: ' hide

accept ename char format 'A20' prompt 'name: '

name: hello

 

5.append

用于在SQL缓冲区的当前尾部添加内容

Append

 

6.archivelog

archie log {list | stop} | {start | next | all | integer} [to  destination]

start -->用于激活自动归档

next  -->用于手工归档尚未归档的下一个日志组

 

7.attribute

attribute [type_name.attribut_name [all[as] alias clear]] for[mat] format like {type_name.attribute_name | alias} on|off]]

type_name对象类型名,attribut_name对象书属性名,alias指定别名,format指定列显示格式,like用于复制另一属性的显示特征,on|off用于控制列的显示特征状态

 

attr employee_type.last_name format a20

 

8.break (参考)

此命令用于禁止显示重复行,并且将显示结果分隔为几个部分

bre(ak) [on report_element [action [action]]] ....

report_element {column|expr|row|report}

action {ski[p]n|ski[n]|page} {nodup|licates|dup[licates]}

SQL> break on deptno skip 1

SQL> set pagesize 40

SQL> select deptno,ename,sal from emp order by deptno;

 

    DEPTNO ENAME             SAL

---------- ---------- ----------

        10 CLARK            2450

           KING             5000

           MILLER           1300

 

        20 JONES            2975

           FORD             3000

           ADAMS            1100

           SMITH             800

           SCOTT            3000

9.btitle

用于指定报表页底部标题

btitle [printspec [text|variable]..] | [on | off

btitle 'page end'

select ename,sal,hiredate from emp where empno=7788;

 

10.change

c[hange] sepchar ole [sepchar [new [sepchar]]]

用于修改SQL缓冲区当前行的内容

 

11.clear

用于复位或者删除特定选项的当前值或者设置

cl[ear] bre[aks] | buff[er] | col[umns] | comp[utes] | scr[een] | sql timi[ng]

SQL> cle bre

breaks cleared

 

12.col

column [column |expr ] {option}

clear entmap(on|off) fold_after fold_before 

format heading text {right|left|center} like{expr|alias}

 

col ename heading 'name' format a10

col sal heading 'sal' formate l9999.99

 

13.compute

break 结合可用于输出小计行

comp [function [label] text] .. of [expr| column| alias] ..on [expr|column |alias | report|row ]..]

break on deptno skip 2

compute sum label 'total' of sal on deptno

 

14.connect

connect scott/tiger@test

connect sys/oracel@test as sysdba

 

 

16.del

该命令用于删除SQL缓冲区一行或多行

del [n | n m |n *| n last| * | * n|* last| last]

n m

n *当前

n last 最后一行

当前行

* 当前  n

last 最后一行

 

17.describe

desc {[schema.]object[@db_link]}

 

18.disconnect

断开连接会话但不退出sqlplus

 

19.edit

用于编辑SQL缓冲区或SQL脚本的内容

ed /u../1.txt

 

20.execute

用于执行单个PL/SQL语句

exec dbms_output.put_line('hello')

 

 

21.exit

exit  {success|failure|warning} | n | variable | bindvariable

{rollback | commit}

 

22.get

OS文件内容装载到SQL缓冲区

get /u../d1.sql

 

23.help

help | ? [topic]

该命令用于显示命令帮助信息

? copy

 

 

25.input

用于在SQL缓冲区的当前行后增加一行或者多行

i(put)  where deptno=10

 

26.list

[n | n m |n *| n last| * | * n|* last| last]

用于列出SQL缓冲区的内容

 

27.n

定位SQL缓冲区的当前行

 

28.passwd

 

29.pause

该命令用于指定暂停执行

pause [text] ----->text 用于指定暂停等待要显示的文本

set pause off

pause adjust paper and press return to continue.

 

 

30.print [variable ..]

print no

 

 

31.prompt

该命令用于指定显示信息

prompt [text]

prompt '按回车键继续'

 

32.remark

用于在脚本中开始注释

 

33.repfooter

该命令用于设置报表脚注

repfooter [page] [printspec [text | variable]..] [on | off]

printspec :col ns[kip] [n]tab nleft center right bold format text

 

34.repheader

repheader [page] [printspec [text | variable]..] [on | off]

printspec :col ns[kip] [n]tab nleft center right bold format text

 

repfooter page center 'employee listing report '

 

35.run

运行并列出缓冲区的内容

 

36.save

将缓冲区内容保存到sql脚本

save file filename create replace append

 

37.set appinfo {on | off | text}

set appi on

show appinfo

该命令用于设置是否通过dbms_application_info包自动注册脚本

 

38.set array[size] {n}

show array

set arraysize 25

该命令用于设置数组提取尺寸

 

39.set auto[commit] {on|off|immediate| n}

该命令用于设置是否自动提交DML语句,默认为 OFF

 

40.set autoprint {on|off}

该命令用于设置是否自动输出邦定变量值

 

41.set autorecovery on|off

该命令用于设置恢复时是否自动应用归档日志

 

42.set autotrace {on|off|traceonly} {explain|statistics}

用于设置是否激活自动跟踪,     只跟踪不显示语句结果  只显示执行计划   只显示执行统计 

SQL> set autot traceonly stat

SQL> select * from scott.emp;

 

43.set blo[ckterminator] {.|c|on|off}

该命令用于设置 plsql会的结束符

 

44.set cmds[ep] {;|c|on|off}

用于设置多个sql*plus 命令之间的分隔符

 ttitle left 'salaries' +   clear column

 

45.set colsep [ |text]

SQL> set colsep |

SQL> show colsep

colsep "|"

SQL> select sal,ename from scott.emp where empno=7788;

 

salaries

       SAL|ENAME

----------|----------

      3000|SCOTT

 

46.set con[cat] {.|c|on|off}

该命令用于设置终止替代变量引用的字符

 

47.set copy {0,n}

该命令设置在执行copy时 提交改变到数据库的行数

 

48.set copytypecheck {on|off}

用于设置在执行copy命令时是否禁止数据类型比较

 

 

50.set describe [depth {1 n all }] [linenum on off ] [ indent on off]

该命令用于设置描述对象的深度级别

 

51.set echo {on off}

该命令用于控制是否激活echo命令

 

52.set editfile file_name

该命令用于设置edit 命令的 默认文件名

 

53.set embedded on|off

该命令用于控制报表开始在页的何处

 

54.set error {on off} [table tablename] [truncate] [identifier identifier]

该命令用于控制是否激活sqlplus的错误日志

 

55.set escape {\ c  on off}

该命令用于定义转字符

 

56.set escchar {@ ? % $ off}

该命令用于定义被转义的字符

 

57.set feedback {n off on}

该命令用于设置显示反馈信息的最低行数 默认值为6

 

58.set flagger {off entry intermen full}

该命令用于检查以确保SQL语句遵从sql 92标准

 

59.set flush {on off}

该命令用于控制输出何时发送到用户显示设备

 

60.set heading {on off}

用于设置是否显示列的标题

 

61.set headsep {c on off}

该命令用于设置col命令列标题的行分隔符

 

62.set instance [instance_path local]

该命令用于设置会话的默认例程

 

63.set lin [n]

该命令用于设置行宽度

 

64.set loboffset {n}

该命令用于设置检索和显示LOB数据的起始位置

 

65.set logsource [pathname]

该命令用于设置恢复时归档日志的位置

 

66.set long {n}

该命令用于设置LONG lob 类型列的显示长度

 

67.set longc {n}

该命令用于设置SQLPLUS检索blob clob long nclob xmltype 类型值的增量尺寸

 

68.set newpage {n}

该命令用于设置页顶端到标题之间的行数

 

69.set null text

该命令用于设置null 显示文本

 

70.set numformat format

该命令用于设置数字的默认显示格式

 

71.set num[width] [n]

该命令用于设置数字值的默认显示宽度

 

72.set pagesize [n]

该命令用于设置每页所显示的行数

 

73.set pause {on off text}

该命令用于设置暂停显示文本,或者激活或禁止暂停显示

 

74.set recsep {wrapped | each off}

用于控制如何显示记录分隔符。

 

75.set recsepchar { | c}

用于设置记录分隔符

 

76.set serveroutput { on off} [size {n|unlimited}] [format  {wrapped | word_wrapped | truncated}]

该命令用于控制是否显示dbms_output包的输出结果

SQL> exec dbms_output.put_line('hello');

hello

 

PL/SQL procedure successfully completed.

 

77.set shiftinout {visible|invisible}

用于控制是否在终端显示shift字符

 

78.set showmode {on | off}

用于控制是否显示set 命令的原值 和新 值

SQL> set arraysize 50

SQL> set show on

new: showmode BOTH

 

SQL> set arraysize 15

old: arraysize 50

new: arraysize 15

 

79.set  sqlblanklines {on|off}

该命令用于控制是否允许在SQL命令之间存在空行

 

80.set sqlcase {mixed|lower|upper}

该命令用于控制是否转换SQL命令的大小写

 

81.set sqlcontiue {>|text}

控制续行时所显示的文本

 

82.set sqlnumber {on | off}

控制是否显示SQL语句行号

 

83.set sqlpluscompat {x.y[.z]}

设置版本号 发布号 更新号

 

84.set sqlprefix {#|c}

该命令用于设置SQLplus前缀字符

 

85.set sqlprompt {text}

该命令用于设置SQL提示符

 

86.set sqlterminator [;|c|on|off]

该命令用于设置SQL语句终止符

 

87.set suffix {sql|text}

该命令用于设置默认文件扩展名

 

88.set tab {on|off}

该命令用于设置空格在终端的输出格式

 

89.set termout {on|off}

该命令用于控制SQL脚本输出

 

90.set time {on off}

该命令用于设置在SQL提示符前是否显示系统时间

 

91.set timing {on off}

该命令用于设置是否要显示SQL语句执行时间

 

92.set trimout {on off}

用于设置是否在显示行尾部截断空格

 

93.set trimspool {on off}

该命令用于设置是否在SPOOL行尾截断空格

 

94.set underline {- c on off}

该命令用于设置在列头底部显示的字符

 

95.set verify {on off}

该命令用于设置是否列出包含替代变量的文本

 

96.set wrap {on off}

该命令用于设置是否截断 被选择行

 

97.show

用于显示SQLPLUS环境变量值。

 

98.shutdown {abort| immediate |normal |transactional{local}}

关闭例程和数据库

 

99.spool [file_name [create |replace|append] | off | out]

用于将SQLPLUS屏幕内容存放到特定文件

 

100.start  [url | file_name | ] [arg ...]

该命令用于运行SQL脚本文件

 

101.startup options | upgrade_options

options [force] [restrice] [pfile=filename] [quiet ]        [  mount [dbname] | [open [open_options] [dbname]]| nomount]

 

open_options : read [only |write [recover]]  |  recover

upgrade_options: [pfile=filename] {upgrade | downgrade} [quiet]

 

102.store set file_name {create | replace | append}

该命令用于保存当前SQLPLUS环境属性到文件

 

103.timing [start text | show | stop]

该命令用于定义定时器名称,并计时数据

SQL> timing start a

SQL> timing show

timing for: a

Elapsed: 00:00:06.03

SQL> timing show

timing for: a

Elapsed: 00:00:16.82

SQL> timing show

timing for: a

Elapsed: 00:00:19.73

SQL> timing show

timing for: a

Elapsed: 00:00:20.35

SQL> timing show

timing for: a

Elapsed: 00:00:20.93

SQL> timing stop

timing for: a

Elapsed: 00:00:28.84

 

104.title [printspec [text | variable]..] [on | off]

用于指定页标题

printspec : bold|center| col n|format text [left|right| skip n| tab n]

 

 

 

106.variable [variable [type]]

该命令用于定义在SQLPLUS 中定义邦定变量

variable: 指定替代变量名

type:指定数据类型

引用邦定变量时,必须要在邦定变量前加冒号。

当直接给邦定变量赋值时,需要使用execute命令

 

 

197.long

可以用set long 命令将LONG 截断点至少增加到 355(默认值为80),以查看视图的查询的全部文本

 

 











About Me

.............................................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友646634621,注明添加缘由

● 于 2018-01-01 06:00 ~ 2018-01-31 24:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

好消息:小麦苗OCP、OCM开班啦,详情请点击http://blog.itpub.net/26736162/viewspace-2148098/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

   小麦苗的微信公众号      小麦苗的DBA宝典QQ群2     《DBA笔试面宝典》读者群       小麦苗的微店

.............................................................................................................................................

DBA笔试面试讲解群 《DBA宝典》读者群 欢迎与我联系



阅读(54) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册