回答

收藏

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

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

我有一个批处理文件,该文件在sqlplus中运行一个SQL脚本,并将输出发送到日志文件:
2 M5 A9 L0 @  q0 I6 d5 q- Y$ o1 j- W6 O4 ?
sqlplus用户/密码 RowCount.log2 L9 N0 i8 [- X# F5 p
6 r* T! g" N! ]# B
我的日志文件包含以下内容:
2 N9 z6 H. f2 r$ X. Y: aConnected to:
1 J, Y0 ?$ r2 k" bOracle Database 11g Express Edition Release 11.2.0.2.0 - Production/ D9 ^7 F. \) a( w  X
SQL> SQL> ) u3 C0 T: k! k6 ^6 t* h: _6 z- t
  COUNT(*)
+ S3 ?) y4 d" |  \, U# x8 J# J/ e----------5 o+ s* w& }" `2 _
     0
0 u: ]6 ~5 A% z% R) F% L$ ]SQL> " {( `& R, g9 Q# |1 }
  COUNT(*)$ F* i* O, q5 m) ?7 r/ b
----------7 V1 \0 I, ^6 z# G2 d; o
     06 p7 ^# _% [# g7 |) R' v1 A6 W
等等,但是它有数千行输出,因此很难确定哪个结果属于哪个语句。9 F$ b: {; D! A+ ]  u( s( p4 Z% U
我想在输出中添加一些格式,以便我可以识别发生了什么。可以对执行的语句进行回显,也可以在脚本中手动插入一些“ echo”语句。理想情况下,它看起来像这样:: a3 g" V4 U& Q
SQL> select(*) from TableA;
8 o# Z( ]; Y' q, y1 z3 p6 o5 B  COUNT(*)
6 E4 F0 b  J  s9 w8 X8 \: n----------
, f+ x4 d1 h$ y+ m8 I     0& c- R9 R: q" t
SQL> select(*) from TableB;
5 p8 v) @" V' [0 ]  G' t  COUNT(*)( z/ c: Q6 D3 t) \# o4 ~3 D+ p
----------) ?# q0 ~3 m  W8 t6 @4 K$ k
     0+ o5 u# ?2 Z" s. o: v6 E( Z
               
" [- M6 P" T( U解决方案:) p! @+ L$ @  i: [1 ?- V+ A8 A
                0 p, E9 L* x; ]* H. U: _

. H" l2 C/ y- |- g+ n! T0 b
0 Y3 s, c3 b; e  g4 [                您可以SET ECHO ON在脚本的开头使用来实现此目的,但是,您必须使用@而不是0 z: e4 C4 x  M) r0 z% c) V8 g1 A
test.sql6 }" b& x  M/ V4 |( b; X1 S
SET ECHO ON
4 f. r+ o3 e3 B7 y" ?SELECT COUNT(1) FROM dual;
( |: t9 M* |, a* nSELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);  }4 `" d/ j' C6 l1 \3 T3 q5 a
EXIT- j/ k8 l: L: M
终端
' f+ V8 @/ O, f; r. N/ Y; R) M7 ]sqlplus hr/oracle@orcl @/tmp/test.sql > /tmp/test.log# a, x& Q  q4 L. `
测试日志% c2 s" E/ w9 g( s
SQL>
3 u" J+ E; ~$ i: e' \SQL> SELECT COUNT(1)从对偶;8 x. {2 H' p  \8 @/ g1 L1 g) k
  COUNT(1)
5 o; X6 K1 m' V----------
1 A; ~+ [+ N3 g, r: P2 {     1个
/ i. s0 i( z5 @- H# PSQL> 0 A- x: ]$ j! x+ _2 U
SQL> SELECT COUNT(1)FROM(SELECT 1 FROM dual UNION SELECT 2 FROM dual);
; e. s/ n3 C6 A  c  COUNT(1)" P+ I/ i9 \- |' F
----------
1 b$ S9 Q* q' o     2个% z1 [5 X* F2 a% Z+ Y; \
SQL>
" G6 a- n# @+ z; A! ]# ISQL>退出
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则