SQL*PLUS命令的使用大全1(转)

上一篇 / 下一篇  2008-06-11 21:09:09 / 个人分类:Oracle

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

新一篇: 新手入门:Oracle 10G服务器安装图解

:wS~YF2}khp0Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。51Testing软件测试网k%I RRa#?T*C\
我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。
9^ W'k4LMX2a"^0除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。51Testing软件测试网{q0~N p @2Q2wr
下面就介绍一下一些常用的sql*plus命令:51Testing软件测试网(Ps0C:u.J1o\

cr4f2W;N'_ V&\ d01. 执行一个SQL脚本文件51Testing软件测试网nX _(t ZY?
SQL>start file_name51Testing软件测试网j3|:U[Q1d+d [v
SQL>@ file_name
#yM:F.[.]0我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
im!~3o/g0@与@@的区别是什么?
0C3`{S j9b\G0@等于start命令,用来运行一个sql脚本文件。
/W.Ss[TM%R#@5p0@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。
7O:W8n+eVA0@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。
"_*t Zy!OHeA0如:在c:temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:
%[:Z5Gts%i!UqTX;~L.M0@@nest_start.sql - - 相当于@ c:tempnest_start.sql
Usf(uT ]1q0则我们在sql*plus中,这样执行:
'b6?q4b d.E0L0SQL> @ c:tempstart.sql51Testing软件测试网myvL]H2L]"s
51Testing软件测试网D6D'\%ybW U
51Testing软件测试网#[,t#o bd]&A[
2. 对当前的输入进行编辑
O$p)| aFP0SQL>edit
e.K1[:{+a(y%{0
f2m9A@zx03. 重新运行上一次运行的sql语句
e%NE.A vM+@2pa/j0SQL>/51Testing软件测试网2AF!T~8bG-a%`)b
51Testing软件测试网`(lR+]!P]LL
4. 将显示的内容输出到指定文件51Testing软件测试网1S^ N| @.Vm o
SQL> SPOOL file_name51Testing软件测试网-I!c|0@"OAz
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
,@lN%hW0
n#g,S%Cm'O,~05. 关闭spool输出51Testing软件测试网"?b$rS`!`~
SQL> SPOOL OFF
h(sm7y;C;jJ0只有关闭spool输出,才会在输出文件中看到输出的内容。51Testing软件测试网_ mK\*_%O*xuQ
51Testing软件测试网5FE$o/hs8P W
6.显示一个表的结构
fPYc6]^:j j%dwF0SQL> desc table_name51Testing软件测试网;W x*zy I0\n}2q
51Testing软件测试网t_k} w#P
7. COL命令:51Testing软件测试网 hj V~/x Xy x/o$E5YZ
主要格式化列的显示形式。51Testing软件测试网:X6K z8fX9BK4w
该命令有许多选项,具体如下:51Testing软件测试网'^ L} Z}'js*m
COL[UMN] [{ column|expr} [ option ...]]
cL&l }|h]0Option选项可以是如下的子句:
+^ah@ y6?&ju^-x0ALI[AS] alias
Ya9s#X{'?0CLE[AR]51Testing软件测试网"n}`GAIC
FOLD_A[FTER]
zw;D0zph0FOLD_B[EFORE]
SQqnN f0_e0L0FOR[MAT] format51Testing软件测试网 @v._:o(r/~ \dY
HEA[DING] text51Testing软件测试网)J4Nj8?$UX C`X.UNJ4`
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}51Testing软件测试网7hR[;[N#V Zn X
LIKE { expr|alias}
IwG3KK0NEWL[INE]51Testing软件测试网[3{1Z3CG
NEW_V[ALUE] variable51Testing软件测试网'?5bn |D#j
NOPRI[NT]|PRI[NT]
$EL~p ] X J0NUL[L] text
a~:h Y%bO0OLD_V[ALUE] variable
~])Ko8J,i(O.U ~0ON|OFF51Testing软件测试网%z6LbT Q},j)|:EM
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
mVF2cPXF0
q dZ(O{5`01). 改变缺省的列标题
(n#O9~d y.jKz'l0COLUMN column_name HEADING column_heading51Testing软件测试网o$j Q` Ye
For example:
#R,tl4kip0Sql>select * from dept;
2dx4ew:mG(Grctr0DEPTNO DNAME LOC51Testing软件测试网!dYD wtYa [a^
---------- ---------------------------- ---------
8z NM(TLF6w010 ACCOUNTING NEW YORK
baV0H{0bp6w0sql>col LOC heading location
kBM,r9Zj7R[0sql>select * from dept;51Testing软件测试网5[&gtJk!o5Q$v
DEPTNO DNAME location
!b4Hc?KN0--------- ---------------------------- -----------
j'n&H0w n:o:h/K010 ACCOUNTING NEW YORK
$a[x7M6Iki;nna0
t{ i)z}!j&` j!z02). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:
2I`:k\5_*r9eHK2Lg&v0Sql>select * from emp51Testing软件测试网Z(j4KKGb`U%X i
Department name Salary
)H+k5C/vdxd7y0---------- ---------- ----------51Testing软件测试网 p\$IyONcH,S
10 aaa 1151Testing软件测试网e3uh5}0B/jm7C
SQL> COLUMN ENAME HEADING ’Employee|Name’51Testing软件测试网?4Y;zi k_d
Sql>select * from emp
(wy(f\@0Employee
ZK6T:q$g0Department name Salary51Testing软件测试网$gy3JQ%U t R2J3P
---------- ---------- ----------51Testing软件测试网*K4D!^Camx qh
10 aaa 1151Testing软件测试网 e+MDt]9eN5R5z
note: the col heading turn into two lines from one line.51Testing软件测试网9Yw&mGR }I:{.A1l,Q
51Testing软件测试网B r+U)fh\)LD5r:O
3). 改变列的显示长度:51Testing软件测试网C)\"To"p{?o
FOR[MAT] format
%{_^o/@:h:p/E0Sql>select empno,ename,job from emp;
8iR a8z,c0EMPNO ENAME JOB51Testing软件测试网/x_.R)RFno9ybayi
---------- ---------- ---------
.t.O7G-] e'T.d"NK07369 SMITH CLERK51Testing软件测试网:hp!UL.W
7499 ALLEN SALESMAN
(G)c9aH1dhk!F07521 WARD SALESMAN
;fd2j,K ?_gF`j0Sql> col ename format a40
*O7KP6SX4{d0EMPNO ENAME JOB51Testing软件测试网$sy(uRzBfDE
---------- ---------------------------------------- ---------
*L7Z_2_1^07369 SMITH CLERK
"Q9a Tm#l07499 ALLEN SALESMAN51Testing软件测试网'G5vN S2[%]
7521 WARD SALESMAN51Testing软件测试网2_|*I c7R/N

Y:TXN K ~04). 设置列标题的对齐方式51Testing软件测试网(e P LAqh'M
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}51Testing软件测试网 XNvEFV&Wae4A
SQL> col ename justify center51Testing软件测试网%z7g2`;O/FZuDG3M
SQL> /51Testing软件测试网 L7z-tS/jY H [V#A
EMPNO ENAME JOB51Testing软件测试网3t7d ~4ex!lA1Bp
---------- ---------------------------------------- ---------51Testing软件测试网y@YKk J0g
7369 SMITH CLERK
*h4G1w^T07499 ALLEN SALESMAN51Testing软件测试网 QyZ9YyiJR C
7521 WARD SALESMAN
8jj }nO0对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边
,?y"PoSA,M1D051Testing软件测试网fp@(q1J|W
5). 不让一个列显示在屏幕上
1k@P&C4B&z0?$|0NOPRI[NT]|PRI[NT]
$L N0IiB2r0SQL> col job noprint
nIq"yp{0SQL> /
1ko3VpE#u0EMPNO ENAME51Testing软件测试网F;iZA2c3lv
---------- ----------------------------------------
IXKJWfI$O,C07369 SMITH
phv|)dmx4g07499 ALLEN51Testing软件测试网N]4H Z.A0Vp
7521 WARD51Testing软件测试网UL-`:[&h xh0D

p9dvZ ar\06). 格式化NUMBER类型列的显示:51Testing软件测试网 xDwK c+YBC~
SQL> COLUMN SAL FORMAT $99,990
W1RH9I2SykB'M0SQL> /51Testing软件测试网$k-L\y~9\N y
Employee51Testing软件测试网[,I psDdu3S N
Department Name Salary Commission
g*q7MY$DlNK?v(b0---------- ---------- --------- ----------51Testing软件测试网ONf5r,A#Y
30 ALLEN $1,600 30051Testing软件测试网9pI:a dkJ

dC4bH ?PT2Zc!o4w07). 显示列值时,如果列值为NULL值,用text值代替NULL值
%XVK K(q"l"]y0COMM NUL[L] text
JJ hmTa(h0SQL>COL COMM NUL[L] text
M M/y-V_051Testing软件测试网i&fX*l&_-Ah(t
8). 设置一个列的回绕方式
Usq!H'H0WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
F0zL~J0COL151Testing软件测试网}&F1w5K/\o
--------------------51Testing软件测试网A{5u Fcy X h
HOW ARE YOU?
2b(ve;}+a3P'\7RR051Testing软件测试网3MYm4g*UunGTy_
SQL>COL COL1 FORMAT A551Testing软件测试网-[x c z_2T
SQL>COL COL1 WRAPPED
T MG Ei%uU0COL1
/{|LT,u]0-----51Testing软件测试网|!ONXu F`:g&D
HOW A
Pg*RqG j6@6ab0RE YO
4B/pf7n A0U?51Testing软件测试网 a |k;Ci_${l
51Testing软件测试网/rnr Yr
SQL> COL COL1 WORD_WRAPPED
+S+@Z_ Bc#}0COL1
l1rx^JA0-----
P/rp6j0B0HOW
``4v8c-d"B^p0ARE51Testing软件测试网-djR%R#}U~r0l
YOU?
h)D)^y9?|8@a8ld051Testing软件测试网N9O(FrBRKN'K ?
SQL> COL COL1 WORD_WRAPPED
io/S/X8UsA0COL1
w#^,^X8EmI Or0-----51Testing软件测试网YE)TK)_!I
HOW A
tdM} F)S8vp0
7h2rP%o_](J09). 显示列的当前的显示属性值51Testing软件测试网;OrTG'N2U"qE!MU1o
SQL> COLUMN column_name51Testing软件测试网I7l ]H t:W
51Testing软件测试网e$q/v\.U Py-RQ
10). 将所有列的显示属性设为缺省值51Testing软件测试网3j%] R"F U V6V2v$O
SQL> CLEAR COLUMNS
0U An ?ed0v2M0
$F5Dt5H3k u)u08. 屏蔽掉一个列中显示的相同的值
G?#`\/Y x0BREAK ON break_column
oE#S!m%n Ab#C1}0SQL> BREAK ON DEPTNO51Testing软件测试网c wz%f c Y y n
SQL> Select DEPTNO, ENAME, SAL51Testing软件测试网D$xN6E];{
FROM EMP51Testing软件测试网B @4x"Z$s;A'BF(Z9l
Where SAL < 2500
K*F4ylH0orDER BY DEPTNO;
a*o&p)l(VI9e4p0DEPTNO ENAME SAL51Testing软件测试网5{:N#^%z4zN ] t_N
---------- ----------- ---------
%[ Da*N#zU)M:p5Bj010 CLARK 2450
*N/NP;jE0MILLER 130051Testing软件测试网[ c5a4[E1N!}7h
20 SMITH 800
2]t4b4H{,n |0ADAMS 110051Testing软件测试网x/KMLYC,{
51Testing软件测试网P6LrD ezOmI
9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。51Testing软件测试网s,mq]V@*gQh#M?A
BREAK ON break_column SKIP n51Testing软件测试网.]'Dx/?L
51Testing软件测试网JO!{3c8j4FF
SQL> BREAK ON DEPTNO SKIP 1
Nx+a$]9N,O/z0SQL> /51Testing软件测试网T!Q!G/\ p%u8z
DEPTNO ENAME SAL
o`;v x$m\0---------- ----------- ---------51Testing软件测试网$}e+S3w\ N(KL#wB
10 CLARK 245051Testing软件测试网a1\"THA!s7hd4@*i!p j
MILLER 1300
]to({aO i051Testing软件测试网1o)O8Hl4c4W'X5F
20 SMITH 80051Testing软件测试网Cr]B6`%@Kb9P
ADAMS 110051Testing软件测试网 r.x~1}ivs

"uGSl0_!z$Cy010. 显示对BREAK的设置51Testing软件测试网-B.UfT yi8D
SQL> BREAK
sXh1d(JV VL5O@e051Testing软件测试网u'{&{0i)e,s+A kw
11. 删除6、7的设置51Testing软件测试网P\5rR$T C
SQL> CLEAR BREAKS
!hjB a^2`5y4l@*`y0
6h+m?&`Qg%[012. Set 命令:51Testing软件测试网L ObZ7g-L
该命令包含许多子命令:
r+kn5](a*^2Vg.]0SET system_variable value51Testing软件测试网9H lj0Qx#t;t
system_variable value 可以是如下的子句之一:51Testing软件测试网j R.Vw;YF:l
APPI[NFO]{ON|OFF|text}
AJ1MJ3w,z0ARRAY[SIZE] {15|n}51Testing软件测试网I0QaG b
AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}51Testing软件测试网[P/j&?C b
AUTOP[RINT] {ON|OFF}51Testing软件测试网]Gx&L+e2g#M
AUTORECOVERY [ON|OFF]51Testing软件测试网J%q exY yS
AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]51Testing软件测试网&h9ja+FM4dlr!IL@
BLO[CKTERMINATOR] {.|c}
2Y`jxaA zJI4k)z r0CMDS[EP] {;|c|ON|OFF}51Testing软件测试网;|M5yH+w
COLSEP {_|text}51Testing软件测试网9u.n5L3L6Q-i+a'uS
COM[PATIBILITY]{V7|V8|NATIVE}51Testing软件测试网A orw&iT vxus
CON[CAT] {.|c|ON|OFF}
g1cL aW*[*W;pe#|0COPYC[OMMIT] {0|n}51Testing软件测试网*ycD8@3U%b
COPYTYPECHECK {ON|OFF}51Testing软件测试网@P+F@Y~
DEF[INE] {&|c|ON|OFF}51Testing软件测试网Wx$M.@/z"l+HT
DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
D)f2E_2V0ECHO {ON|OFF}51Testing软件测试网6f+W} w/`A/n
EDITF[ILE] file_name[.ext]51Testing软件测试网3e,?Km d1a#zRY,pDD
EMB[EDDED] {ON|OFF}51Testing软件测试网8H7j$U` Z No~I s
ESC[APE] {|c|ON|OFF}
6Lu*z5J~[\D0FEED[BACK] {6|n|ON|OFF}51Testing软件测试网Wo qR6UL,fp
FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}51Testing软件测试网(KAL9B?$VZ@
FLU[SH] {ON|OFF}
~1g,zv5X^ f"YpU {0HEA[DING] {ON|OFF}
eX e$W Cg0HEADS[EP] {||c|ON|OFF}51Testing软件测试网7r7u3q {0SX
INSTANCE [instance_path|LOCAL]51Testing软件测试网Uj}x"T8I pC
LIN[ESIZE] {80|n}51Testing软件测试网h2zot3Y3v7iA
LOBOF[FSET] {n|1}
-BF@)t0`a8s0LOGSOURCE [pathname]51Testing软件测试网$Ub X^?2\
LONG {80|n}51Testing软件测试网?!J6t/Om%k3M
LONGC[HUNKSIZE] {80|n}
!M*H2}sV*nK0MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL51Testing软件测试网?3cO jbH-W,VJ
{ON|OFF}] [PRE[FORMAT] {ON|OFF}]51Testing软件测试网t Ixc4w i,O ^ L
NEWP[AGE] {1|n|NONE}51Testing软件测试网"_.O$k?v:WW&Fk
NULL text51Testing软件测试网2W5I*ps1u ml A
NUMF[ORMAT] format
8X1n C1`%lS'B.B0NUM[WIDTH] {10|n}51Testing软件测试网9ds[YS4v#q?
PAGES[IZE] {24|n}51Testing软件测试网6Vp^0HE
PAU[SE] {ON|OFF|text}
by&t@4j%{-N0RECSEP {WR[APPED]|EA[CH]|OFF}51Testing软件测试网|,BU4A'j#Tk7[
RECSEPCHAR {_|c}
dqr nK mo:Q0SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_
3t1w5s R7}o1R!aQg0WRAPPED]|TRU[NCATED]}]
,\|m?7?:R0SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}
^e`|L'~7L(|X7S?Y0SHOW[MODE] {ON|OFF}51Testing软件测试网 mg-E|HA
SQLBL[ANKLINES] {ON|OFF}
8}tP%UM5W.Sx~z0SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}
Js6m5Z}N0SQLCO[NTINUE] {> |text}
i2E a0\&XMM@2s'~+l0SQLN[UMBER] {ON|OFF}
:A o.C|IuK0SQLPRE[FIX] {#|c}
"@T!Uuw$Tlh0SQLP[ROMPT] {SQL>|text}
f$H _7Q tSX&|'N |0SQLT[ERMINATOR] {;|c|ON|OFF}
,l8M(`B"s3Gg0SUF[FIX] {SQL|text}
.N w:} ^IQwp0TAB {ON|OFF}51Testing软件测试网u9WDa1c!{ b
TERM[OUT] {ON|OFF}
'oX2W%F)tQy0TI[ME] {ON|OFF}51Testing软件测试网$B\%Z6q]%Y.Lu
TIMI[NG] {ON|OFF}
8b)\CrN/I0TRIM[OUT] {ON|OFF}51Testing软件测试网A{I2O"TQ\g
TRIMS[POOL] {ON|OFF}51Testing软件测试网:~7OrK6dG*o
UND[ERLINE] {-|c|ON|OFF}51Testing软件测试网-jvi2ATcD/v,i
VER[IFY] {ON|OFF}51Testing软件测试网O gf2|6` {
WRA[P] {ON|OFF}
3h u0i,j`3_h[0
Ik,V RD ];] c01). 设置当前session是否对修改的数据进行自动提交
(aM|{-OW!l0SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}51Testing软件测试网:T z Uz6Uu
51Testing软件测试网 q4Q;y!Bk
2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句51Testing软件测试网n.`%V Ut_m
SQL> SET ECHO {ON|OFF}
hHpIg051Testing软件测试网2lQ a5UEP v#G
3).是否显示当前sql语句查询或修改的行数
5[(k`2cY\`0SQL> SET FEED[BACK] {6|n|ON|OFF}
(^`\9o@0默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数51Testing软件测试网G+y wk0\ h

;eT pIi O5L2A7D04).是否显示列标题51Testing软件测试网%n-f"FK` MN:]MVd/F
SQL> SET HEA[DING] {ON|OFF}
/~HK jhp-WM#u0当set heading off 时,在每页的上面不显示列标题,而是以空白行代替51Testing软件测试网UF)tF+o-s
51Testing软件测试网*Mnvu\'` A"C.L0_
5).设置一行可以容纳的字符数51Testing软件测试网HD{NJb sZ
SQL> SET LIN[ESIZE] {80|n}
b el)U\6l-J@7^)~0如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。51Testing软件测试网0xPn UA0yh

l9N|7R K n06).设置页与页之间的分隔51Testing软件测试网 } e&zXE7[$x%{5N
SQL> SET NEWP[AGE] {1|n|NONE}
,zW u|6`P*yu0当set newpage 0 时,会在每页的开头有一个小的黑方框。51Testing软件测试网(L glJJ5p'x
当set newpage n 时,会在页和页之间隔着n个空行。
(Nyt3F @F8Haa{0当set newpage none 时,会在页和页之间没有任何间隔。51Testing软件测试网y8W-C,R^n5j
51Testing软件测试网6aZ~;U/B)O!w
7).显示时,用text值代替NULL值51Testing软件测试网V%XfgR4i$@
SQL> SET NULL text51Testing软件测试网O0nwSs
51Testing软件测试网@;J(h-H(bn
8).设置一页有多少行数
d{ShYX9`?4B#ho0SQL> SET PAGES[IZE] {24|n}
r(S ?9k8R h0如果设为0,则所有的输出内容为一页并且不显示列标题
k+zH$PNp0
;YH@ ? Mv}z09).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。51Testing软件测试网{@r-C!ew?;H7F}
SQL> SET SERVEROUT[PUT] {ON|OFF}
f'p*O%W4p;zK0在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。
``L1{y+|0
S8}L#z7S|010).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句51Testing软件测试网lf~Ag(F4v"yx
SQL> SET WRA[P] {ON|OFF}51Testing软件测试网U ]hoO7}&[,S
当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。
3ggG yf)G0
\4z\\,uH011).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。
K`gJ!ya0SQL> SET TERM[OUT] {ON|OFF}
e3l1_VeL d[ s0在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。
B7Y6L(L3d_p0
0P~6B)f/z I*~1Pl3iHT'f012).将SPOOL输出中每行后面多余的空格去掉
/@ j#AX6N-n~ Q0SQL> SET TRIMS[OUT] {ON|OFF}51Testing软件测试网nL9z Fb$@V7l

Ve \jAVoj013)显示每个sql语句花费的执行时间51Testing软件测试网H}DA9lyA;e:t
set TIMING {ON|OFF}51Testing软件测试网buM.K(H

/P8ETf&pu4j014). 遇到空行时不认为语句已经结束,从后续行接着读入。
?#U `#W}mI(Pz0SET SQLBLANKLINES ON51Testing软件测试网n ~ r*u8Ew8V
Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本:
b,a8['u9lC0select deptno, empno, ename51Testing软件测试网L6M:D!b/Xh
from emp
y&Kr;I!t1F;r%L051Testing软件测试网i&t!u iZ AT(v!f
where empno = '7788';
2A9NUC D@5L+c0如果拷贝到sql*plus中执行, 就会出现错误。这个命令可以解决该问题
S0y"y(V eb051Testing软件测试网Y1J0VU1uZ%nV
15).设置DBMS_OUTPUT的输出51Testing软件测试网4k#|H6Ke
SET SERVEROUTPUT ON BUFFER 20000
h.P*CXN9X)ZG2s5k0用dbms_output.put_line('strin_content');可以在存储过程中输出信息,对存储过程进行调试51Testing软件测试网#t`T.O2u
如果想让dbms_output.put_line(' abc');的输出显示为:51Testing软件测试网0V*i`-\b-L u
SQL> abc,而不是SQL>abc,则在SET SERVEROUTPUT ON后加format wrapped参数。51Testing软件测试网6IeK+O'V5G$H4B1X

yt{|bx8t3J)e016). 输出的数据为html格式
SJld],V0iV0set markup html51Testing软件测试网m8U/a(DG)s m
在8.1.7版本(也许是816? 不太确定)以后, sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.51Testing软件测试网X^tXp#_k-PLR/V
注意其中的spool on, 当在屏幕上输出的时候, 我们看不出与不加spool on有什么区别, 但是当我们使用spool filename 输出到文件的时候, 会看到spool文件中出现了等tag.51Testing软件测试网h6f t"JQ^,o

)P P:p5X9W UvQE051Testing软件测试网P8_}z;\Ab
14.修改sql buffer中的当前行中,第一个出现的字符串
[FH/i q C%I?0C[HANGE] /old_value/new_value
N'i4Dc!T |(Tn0SQL> l51Testing软件测试网~e A h~ J|
1* select * from dept
z5VbE6o!j(R0SQL> c/dept/emp51Testing软件测试网CnbgkX5Pnt
1* select * from emp51Testing软件测试网-i'V"G,ll#}h5E9p7I)@
51Testing软件测试网y'a6I I1q J?3O-j
15.编辑sql buffer中的sql语句
.@;b Ic!X)]#^0EDI[T]
T0i,\0S+N-bo&v051Testing软件测试网\X%h$a? w,Oj
16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行51Testing软件测试网nU~F!fF
L[IST] [n]51Testing软件测试网/` l*s"@5s5LN
51Testing软件测试网.C A.c lW q|A]
17.在sql buffer的当前行下面加一行或多行51Testing软件测试网Y1XZ KCkI
I[NPUT]51Testing软件测试网ZBPd!v~

8fZ`lz?%r0u018.将指定的文本加到sql buffer的当前行后面
k&Wu7\ }B a-]+n6v0A[PPEND]51Testing软件测试网)}eLU4p"\
SQL> select deptno,51Testing软件测试网3{(q9v{} T
2 dname
#O!n j0FO v)i@j F03 from dept;
.MBO.f)Jx#m|0DEPTNO DNAME
;? R~F1^JCCwgM0---------- --------------
9F ky9a%@W&q} s010 ACCOUNTING51Testing软件测试网7wB9|8gw0D&~(T`
20 RESEARCH
SQLAJ5\030 SALES
K6{8p,r]040 OPERATIONS
B L)G ^b3s_Sx-_c051Testing软件测试网-[5Dh Z)W
SQL> L 251Testing软件测试网/M.A-C,`2x0bt!K|
2* dname51Testing软件测试网%\%krx6`V&m
SQL> a ,loc51Testing软件测试网9GFJg_P6C
2* dname,loc
h&h&J4P+m `9IL0SQL> L
.j[i.nj}m01 select deptno,51Testing软件测试网0{[}(\tEw4W7g
2 dname,loc
`vwg\ CUt0h03* from dept
.x#CA!YX|0SQL> /51Testing软件测试网2gA@RtCC5J
51Testing软件测试网|B dy3FP
DEPTNO DNAME LOC
8M&G,x-V bT] I0---------- -------------- -------------51Testing软件测试网:L%[ s5x;Y|4W
10 ACCOUNTING NEW YORK
5Qg h8Y8?%@020 RESEARCH DALLAS51Testing软件测试网,C,hs,}4Q\n
30 SALES CHICAGO
$o:dn szY'Ij"[040 OPERATIONS BOSTON51Testing软件测试网 r8o5p;ALk rp&l!j

S\%x'x&T]{`w&H/sW019.将sql buffer中的sql语句保存到一个文件中
YNqjB;|GZZ0SAVE file_name51Testing软件测试网E6@3wM7u

j$UG R [@020.将一个文件中的sql语句导入到sql buffer中
EIIXS0RV4V0GET file_name51Testing软件测试网.A~c9uM$GY:f0V
51Testing软件测试网,\ x _d[%m%y
21.再次执行刚才已经执行的sql语句
dIF tsS/Yp?'l"R9@J0RUN
U1m5?"}4x'Y5X-e@%Pr0or
1iI3?)Box-Eg{6_kV0/51Testing软件测试网%o/p(K&^/E){;s
51Testing软件测试网OM5wx6cjS-x4Hr ^
22.执行一个存储过程51Testing软件测试网D'i1{f}+KS-A|v
EXECUTE procedure_name51Testing软件测试网Um!q N{L
51Testing软件测试网)D4{(f/A9DL7DH+i
23.在sql*plus中连接到指定的数据库51Testing软件测试网"T({#P0hb#eM
CONNECT user_name/passwd@db_alias51Testing软件测试网f6fS{0s^qS+n
51Testing软件测试网#e/R f&M^*k8A
24.设置每个报表的顶部标题51Testing软件测试网b\ w&jxc_
TTITLE51Testing软件测试网)Q|Zy5Rr;{
51Testing软件测试网:iKp;J7r@n
25.设置每个报表的尾部标题
yP+|$w4ZW:K0Hl0BTITLE51Testing软件测试网 k Z5TCc
51Testing软件测试网VDs]3G
26.写一个注释
0x \*?%@-X%P;],cl$x0REMARK [text]
tVN!uIC f051Testing软件测试网!m?t:fL"x| J.G
27.将指定的信息或一个空行输出到屏幕上51Testing软件测试网2@\C'b'}%hZJ+n4p s
PROMPT [text]
Xe1O*VIuo7t6Fr051Testing软件测试网K[ J$UoS^)e2wS
28.将执行的过程暂停,等待用户响应后继续执行
#oV;_3iix0PAUSE [text]51Testing软件测试网k Yb2Z?H4A5PE0@1C
51Testing软件测试网|+|*I1zM r Su
Sql>PAUSE Adjust paper and press RETURN to continue.51Testing软件测试网#_ r D&Hs

PlG"PfPy029.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)
(F$s?,zc0COPY {FROM database | TO database | FROM database TO database}51Testing软件测试网9wL]$A"](dHp
{APPEND|Create|Insert|REPLACE} destination_table
RRZZ~(_cD)N{l:nG0[(column, column, column, ...)] USING query
|i#H+F4P;LqH051Testing软件测试网dLP$R }7B0z
sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST51Testing软件测试网4D4} p AU:p4oU9F_ @f
create emp_temp
`(QmO\-[0USING Select * FROM EMP51Testing软件测试网/Jr @$f-{Oy,L.e

?:@6aA[030.不退出sql*plus,在sql*plus中执行一个操作系统命令:
&Z*x0[/pb;y0HOST51Testing软件测试网0fi&q*G/RyK1qf s
51Testing软件测试网*D9R'[#G#[3Ww^
Sql> host hostname
4{SB.|1k{Vv$]#W0该命令在windows下可能被支持。51Testing软件测试网 E.t/K2iN4y1q

as5V]6Q`031.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus:51Testing软件测试网&}\t^I2h
!51Testing软件测试网0pV$yg|*f gs
51Testing软件测试网 ic G&]YvF
sql>!
Ked f M\p mp0F0$hostname
1{|-x1x0M0$exit
^1n_9l7`&dB2v0sql>51Testing软件测试网2Hm!h\*EF H]2EbS
51Testing软件测试网#t#N%zN@5P1[
该命令在windows下不被支持。51Testing软件测试网aZ3x/PZ2j~
51Testing软件测试网"Yr+i(e\g+avO
32.显示sql*plus命令的帮助
W/o{/v | r }s0HELP51Testing软件测试网 B tOz L[u
如何安装帮助文件:
K/p:x S;YP&Jn0Sql>@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql
@$Wf"zn[Kz8B0Sql>help index51Testing软件测试网^EYn~@

9deP9N~w.F!sX033.显示sql*plus系统变量的值或sql*plus环境变量的值51Testing软件测试网&LHL m!D5n-u
Syntax51Testing软件测试网(I;W%f9mPRg]
SHO[W] option
ZT&YSm,L~2W!@0where option represents one of the following terms or clauses:51Testing软件测试网n-S\A#P"W
system_variable51Testing软件测试网up^;~w'`H6Z @
ALL51Testing软件测试网]hS8|#Lr
BTI[TLE]51Testing软件测试网3V$K/xg^'aF)A
ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|51Testing软件测试网E-g,VBM%dlL#K
TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]
K$c.DmTT | L0LNO51Testing软件测试网F-d@Y&M#gW
PARAMETERS [parameter_name]51Testing软件测试网*Ykm2R,Wb!?n
PNO
3P!Q0B_k$O0REL[EASE]51Testing软件测试网Q~T z&I
REPF[OOTER]51Testing软件测试网3U(S oX8Mp
REPH[EADER]
Lun im3Ox2t0SGA51Testing软件测试网'hk4GLEh ~-K5E G R
SPOO[L]
+s7A)~xq6[1i V0SQLCODE51Testing软件测试网*S$gFFN [`P8Rn
TTI[TLE]
Rut(n eG p$N0USER
+n:V+w cXb Xdw051Testing软件测试网`.H:Y(v9t kU.Z
1) . 显示当前环境变量的值:
,jXl6t3yV$g!i0Show all51Testing软件测试网2~S_u:c%yS

u{OPu2D['m5Z02) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息51Testing软件测试网u(c2|L5v D
Show error51Testing软件测试网+qD4nFjXJO
当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。
Wb'M]s-J ]S051Testing软件测试网-r^$\6s2C*`i%dx
3) . 显示初始化参数的值:51Testing软件测试网@8nzp3SlD"zG
show PARAMETERS [parameter_name]51Testing软件测试网RXVY$i |i/q
51Testing软件测试网 a{5EL$R[5N!s
4) . 显示数据库的版本:
(lb iI.m;u g%K0show REL[EASE]51Testing软件测试网X'j2{!F{K R A(g;G

Ww \6NobUOS9c05) . 显示SGA的大小
.B/a%nO@0show SGA51Testing软件测试网L,Lk!t'bl

oV@2j/e\y ot06). 显示当前的用户名
K2AM`*l-Bs]0show user51Testing软件测试网o!Q ~G`+t
51Testing软件测试网!y-ri._y3q
34.查询一个用户下的对象
G"{#}2e3rJ"h3^!I@0SQL>select * from tab;51Testing软件测试网&C/Du3`}q
SQL>select * from user_objects;
;|%D:nmG,Q2fk.x'S051Testing软件测试网 wYTk)Q N8i(Ix+vu
35.查询一个用户下的所有的表
'K/H(AI2i,Kf0SQL>select * from user_tables;51Testing软件测试网| |$z3j @

,w(Mzoo%CE V036.查询一个用户下的所有的索引
V T!\1I,}K0SQL>select * from user_indexes;51Testing软件测试网'O3RQ`A.\.kjF

c4aF7k(BGB051Testing软件测试网u%e/r(Ouc
37. 定义一个用户变量51Testing软件测试网Rvmy,Vg@
方法有两个:
3{xE-A-M0a. define
5D2_3wG x%L$}%Z+q.U-\0b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]51Testing软件测试网-H4}d:y@$c*l{
OLD_V[ALUE] variable [NOPRI[NT]|PRI[NT]]51Testing软件测试网 C6}o0_({iEh:j

"Z.m#n Dq5s:p"U0下面对每种方式给予解释:
I o3A S,MXx y-A0a. Syntax51Testing软件测试网F8@*?Lx'au'jf P
DEF[INE] [variable]|[variable = text]
"x a;QP9z)zQv0定义一个用户变量并且可以分配给它一个CHAR值。
7@Q3_SHc Bn:{0
h+AO.W |] ?0assign the value MANAGER to the variable POS, type:51Testing软件测试网7uC%o:w9k k r'^[
SQL> DEFINE POS = MANAGER
1t(@A"v@#F051Testing软件测试网X/^'ir-o#`5w
assign the CHAR value 20 to the variable DEPTNO, type:
^9?/P$S1J:C+toR0SQL> DEFINE DEPTNO = 2051Testing软件测试网Y q"g%a?{2|B

yn,tbGQ)mC,D0list the definition of DEPTNO, enter51Testing软件测试网s{E J4~*d
SQL> DEFINE DEPTNO
/{Zn |0b&ju!fw0―――――――――――――――
? g,~$~ k i)v+b0DEFINE DEPTNO = ”20” (CHAR)51Testing软件测试网!Y4la8ZS FU'M;h
51Testing软件测试网9w lz0JF2hbv
定义了用户变量POS后,就可以在sql*plus中用&POS或&&POS来引用该变量的值,sql*plus不会再提示你给变量输入值。51Testing软件测试网]%]it ]l#k
51Testing软件测试网,a5A8A.{ watT
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]51Testing软件测试网7jm%B&v}#h
NEW_V[ALUE] variable51Testing软件测试网 F6E:knGsm;S
指定一个变量容纳查询出的列值。51Testing软件测试网$^ Y a/N^ B/HRb
例:column col_name new_value var_name noprint51Testing软件测试网3\o2{tdA*T @J
select col_name from table_name where ……..
UcK._(b0将下面查询出的col_name列的值赋给var_name变量.51Testing软件测试网Ai3|S8A+BQa!g

-B`7B4_?0一个综合的例子:
;v#f4~ t9@}T!a0得到一个列值的两次查询之差(此例为10秒之内共提交了多少事务):51Testing软件测试网 b(c\!F8@%`THJ
column redo_writes new_value commit_count
-CXD|8Jy/L6Bo0
bWUmAh0Xc.YY0select sum(stat.value) redo_writes51Testing软件测试网(q1|P0h)k/efb
from v$sesstat stat, v$statname sn51Testing软件测试网%wscW ?(c lE$W
where stat.statistic# = sn.statistic#51Testing软件测试网7E9]R3Sx%e5\!tL
and sn.name = 'user commits';
(wpH*w pkW jSo\0
S@)hC0p'j3Os_0-- 等待一会儿(此处为10秒);51Testing软件测试网geQ~/P4^)GE
execute dbms_lock.sleep(10);51Testing软件测试网!P b5`"L*Z#b
51Testing软件测试网 ?ik&i8L(Yg
set veri off51Testing软件测试网-A0C]*^ D9s S }*{_ D6f
select sum(stat.value) - &commit_count commits_added
PAo(c.[ zH&a6NI0from v$sesstat stat, v$statname sn
yRu kQ#u0where stat.statistic# = sn.statistic#
rzvPpD0and sn.name = 'user commits';
i,puF2^\-A4B0
F9P`$z.u(Ii051Testing软件测试网9o2s/M] v6`zQf\
38. 定义一个绑定变量
4S#w@ \]/U0VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR]]
0@3VM&q+{ f+C]0定义一个绑定变量,该变量可以在pl/sql中引用。
K&buD!m6G0可以用print命令显示该绑定变量的信息。
q$Yp3NW.J8w0如:51Testing软件测试网o+ei3Ol:T}8Q
column inst_num heading "Inst Num" new_value inst_num format 99999;
4rY"^t*M6?l0column inst_name heading "Instance" new_value inst_name format a12;
r4]Gs&cZ"}{0column db_name heading "DB Name" new_value db_name format a12;51Testing软件测试网Eue&D_dFO+X
column dbid heading "DB Id" new_value dbid format 9999999999 just c;51Testing软件测试网 Nf~E$cW(Z
51Testing软件测试网%iQa/H]D
prompt
i*iwD0r;Ibwk7\,f;^0prompt Current Instance51Testing软件测试网6dWs+ZPQ'i^;f3KR
prompt ~~~~~~~~~~~~~~~~
j7hLW O+AW0
Jq Gp'qy^e!D1s)O0select d.dbid dbid
;AO4fW(E;b0, d.name db_name51Testing软件测试网(i&Eb ?Z i i
, i.instance_number inst_num51Testing软件测试网,{7x R%m2^I
, i.instance_name inst_name51Testing软件测试网$CkU[#Bw
from v$database d,
?9Uql*M \0v$instance i;
7@E(vW3KR!j0
4r,o\qMU0variable dbid number;
0e&X5@.I#v5|r0variable inst_num number;
OE1rwE y0begin51Testing软件测试网ho V%j)y9Wlu
:dbid := &dbid;
[Hb_/T[T0:inst_num := &inst_num;
7J3Kh&CUV'^Q!{i0end;51Testing软件测试网;l bNo5p~7?
/51Testing软件测试网$Z1m ~3u%iGI5y E
说明:51Testing软件测试网6tDo,m Di%B
在sql*plus中,该绑定变量可以作为一个存储过程的参数,也可以在匿名PL/SQL块中直接引用。为了显示用VARIABLE命令创建的绑定变量的值,可以用print命令
yJ)Aa J+i;f w0
!ch x au,E sa0注意:
!t w-xv'F^4G)M0绑定变量不同于变量:51Testing软件测试网k:o F]+wKR
1. 定义方法不同51Testing软件测试网&hh%L.|+{
2. 引用方法不同51Testing软件测试网 ZMM*I-k OA3`
绑定变量::variable_name51Testing软件测试网M8q#t!bq!G"W?9F@
变量:&variable_name or &&variable_name51Testing软件测试网DH2^G&E
3.在sql*plus中,可以定义同名的绑定变量与用户变量,但是引用的方法不同。51Testing软件测试网P!Y$o(o@

/HYek]039. &与&&的区别
~z _ ]2C W%q8^0&用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。51Testing软件测试网%NPuiZX Q
&&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。51Testing软件测试网 NC1r/c m ^U5b&ueI

5I#f;Dr7o0如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:
F,Ci6FL0m(^!?0select count(*) from emp where deptno = &deptnoval;
R@^{2y0{0|e&Y0select count(*) from emp where deptno = &deptnoval;
?)~'Am@z Vb0select count(*) from emp where deptno = &deptnoval;
z@Zf'n-zKEo ]3N9k051Testing软件测试网 i#[&x F%J%\
将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值:
8]JoJPbB S0select count(*) from emp where deptno = &&deptnoval;
R:A;fu#TD0P$o"c0select count(*) from emp where deptno = &&deptnoval;51Testing软件测试网C&Lpo~C+Kpi
select count(*) from emp where deptno = &&deptnoval;
u)Tz?|d051Testing软件测试网n.m4o$dw#j
40.在输入sql语句的过程中临时先运行一个sql*plus命令
p3Mdm'V j0#51Testing软件测试网5Q3ar ~$z y
有没有过这样的经历? 在sql*plus中敲了很长的命令后, 突然发现想不起某个列的名字了, 如果取消当前的命令,待查询后再重敲, 那太痛苦了. 当然你可以另开一个sql*plus窗口进行查询, 但这里提供的方法更简单
~8U-I h7x~^N G0
K*W6^V,R)tN#Za0比如说, 你想查工资大于4000的员工的信息, 输入了下面的语句:51Testing软件测试网%SgA-R!eG

8? Y5Pf"Je+K|0SQL> select deptno, empno, ename
P;FH&j%_m&oD{02 from emp51Testing软件测试网-H q tTjlUfQNh
3 where51Testing软件测试网6JfW'ptvS$R
这时, 你发现你想不起来工资的列名是什么了.51Testing软件测试网?bU&u7T\;w"ITD
51Testing软件测试网9cOD [b*C3k!D
这种情况下, 只要在下一行以#开头, 就可以执行一条sql*plus命令, 执行完后, 刚才的语句可以继续输入
;o/FM7r6L%|0
_7q$sdrD"T0SQL>> select deptno, empno, ename51Testing软件测试网_&t kXEOQ
2 from emp51Testing软件测试网XonWGNV;vu"b2i
3 where
Vg*Phq_p06 #desc emp
j~I7VfHLjP;e0Name Null? Type51Testing软件测试网2l+e`&ux9QTW1p
----------------------------------------- -------- --------------
xl4X#fXb*K9W \.Mz0EMPNO NOT NULL NUMBER(4)51Testing软件测试网-K!EHzEY P\6h
ENAME VARCHAR2(10)
I2mQDX0JOB VARCHAR2(9)51Testing软件测试网t ^1@-R"`V.GA
MGR NUMBER(4)51Testing软件测试网G2Hf&`$`1p(Q,Z
HIREDATE DATE51Testing软件测试网-n8UBj7Zp*e,O/h
SAL NUMBER(7,2)51Testing软件测试网W,fu4B6r@
COMM NUMBER(7,2)51Testing软件测试网!s+m3}r\N
DEPTNO NUMBER(2)
;]2p5wu'X z9l5jw)G0
'@[k3e.Kp}3N06 sal > 4000;
|$g|2w!||i;I051Testing软件测试网"_,]a0y+G
DEPTNO EMPNO ENAME
{h#v7k\:yN] AZ0---------- ---------- ----------
Hc\ [2x*WD#x010 7839 KING51Testing软件测试网(E V7o N:Z:?~

KGI]-I)E7U041. SQLPlus中的快速复制和粘贴技巧
#paG yD|5Q01) 鼠标移至想要复制内容的开始
v/l(`2N"Mep)Eg02) 用右手食指按下鼠标左键51Testing软件测试网2y.`px,VH PG&C
3) 向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样
w4xq)c5k [04) 内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键51Testing软件测试网[+x"Ug0GYk!Ah.jtXu
5) 这时,所选内容会自动复制到SQL*Plus环境的最后一行
"X3h*u7w9}8[Zd!w051Testing软件测试网iw:F-vCoj

TAG: Oracle

 

评分:0

我来说两句

Open Toolbar