回答

收藏

如何在SQLPLUS中执行SQL脚本期间回显文本

技术问答 技术问答 224 人阅读 | 0 人回复 | 2023-09-14

我有一个批处理文件,该文件在sqlplus中运行一个SQL脚本,并将输出发送到日志文件:
. ~9 u8 r* V9 T& ~( j0 e! J
# @# ^+ D8 Y2 f- T+ fsqlplus用户/密码 RowCount.log- l- Y. f* g6 T, J. z
9 G! q" m: j! @0 B% q" {
我的日志文件包含以下内容:
6 [8 D$ N" |1 `. _  D3 GConnected to:6 o, B9 z& L# h% {3 K! a( W
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
4 A; o2 b9 o* SSQL> SQL> . x# Q' j% |: p! `, ^
  COUNT(*)
* t, u/ a0 L' w8 S----------: l  s6 }& f- ~1 m; X- K
     0$ X4 p0 x1 B9 Q  M3 Y
SQL> ' ]- b7 q& z! L/ C9 a
  COUNT(*)' s% q8 t8 G$ U  `, m* ^4 Y* g4 u
----------
" t' P2 A3 _4 |0 A5 ?2 H     0# w8 L" [2 P: M. u+ j" s
等等,但是它有数千行输出,因此很难确定哪个结果属于哪个语句。6 p+ |  c0 K$ J
我想在输出中添加一些格式,以便我可以识别发生了什么。可以对执行的语句进行回显,也可以在脚本中手动插入一些“ echo”语句。理想情况下,它看起来像这样:
: [4 T" P2 ?9 `7 i* H6 o+ Z- HSQL> select(*) from TableA;* c( m5 [: Z# d: G7 k
  COUNT(*)7 V/ g& Z& A; @
----------
  d* [+ A+ k  d1 w7 D) H. D2 f     0
1 ], s' ~; h  A/ D, m4 u/ t! MSQL> select(*) from TableB;
# N9 U! s0 q2 }* o' R1 }1 K  COUNT(*)/ g1 Y* u' c. P# X# s
----------" x; K( b4 W( C, h/ a8 _
     0
- `, U2 T0 N0 H6 ]5 B" F3 j3 @                8 |. f: G* e5 X& L
解决方案:0 K! ?  I+ z: X- B: R
                9 ~7 s" n# S5 B' g7 }: m
6 V' c& U' U" \% i$ n( e/ u
" Z; P! b8 y' g& W
                您可以SET ECHO ON在脚本的开头使用来实现此目的,但是,您必须使用@而不是
" @$ `. A5 d" j0 s( Xtest.sql
  X  U, j% F# C' G- s3 w% ^SET ECHO ON
- _3 i' u9 s+ G& Y* C7 @$ l. p. R% DSELECT COUNT(1) FROM dual;' k% ^. \& i+ u$ ?; f( H- g
SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);
; q( y) s9 j1 y( W/ M. |EXIT4 p$ I& }+ N/ x+ f1 _" }* s
终端6 F" B$ Z: A4 c+ a0 D- L! A$ w
sqlplus hr/oracle@orcl @/tmp/test.sql > /tmp/test.log
4 l" k+ E( \. W% |) X测试日志& E4 q& c0 O  ^$ Z2 N) h) O3 D
SQL> , i5 l& f4 O( N, M1 t! L; c
SQL> SELECT COUNT(1)从对偶;
- v0 t% `  M) N3 e  COUNT(1)
* Q, N- s  `: s' A" B4 h----------
( }( y4 d* U! V# y     1个1 ^5 v  V# V7 ?  T: P" Z+ O2 V  Y% p+ W
SQL>
, r6 V+ `! |! @8 r+ {  ySQL> SELECT COUNT(1)FROM(SELECT 1 FROM dual UNION SELECT 2 FROM dual);8 z1 Q$ r$ M: p0 ~
  COUNT(1)
& q& j& i/ c. b----------* e7 `/ _0 e) ]+ O+ d, D$ [) ?
     2个
3 o. X7 P4 f2 L% ~SQL>
- o0 T! q# J# B8 a" P- S) @SQL>退出
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则