java.sql.SQLException: ORA-00907: missing right parenthesis

情景1:

如题,Oracle数据库,执行一段SQL时包如上错误:

SQL代码如下:

select count(1) as num from (select br.* from   tableName   br
                     where 1=1
                     AND BR.IS_AVAILABLE =1  --有效的供应商) tmp_tbl ;

有些时候我们希望为自己的SQL代码加上注释,如上面的代码;

执行时发现 “--有效的供应商” 中的"--"导致后面的所属一行的代码全部被注释,解决的办法:

1、将注释后面的代码进行回车换行,但是这种方法不彻底,容易出现问题。

2、将“--有效的供应商”改为 “/*有效的供应商*/”即可,只注释需要注释的部分,即改为:

select count(1) as num from (select br.* from   tableName   br
                     where 1=1
                     AND BR.IS_AVAILABLE =1  /*有效的供应商*/) tmp_tbl ; 。

上面的错误是一时手误导致的,但是报此种错误的情景还有很多。

情景2:

有些时候我们的SQL语句比较复杂或很长,如果SQL语句中的关键词不进行空格或者回车换行处理的话,也会导致这个错误,那么,我们就使用特殊符号规避此类错误,
一个是换行符chr(10),一个是回车符chr(13),这两个是常见的 ASCII码  ,具体其他的ASCII码 请见链接 http://blog.csdn.net/liqfyiyi/article/details/6936478  ,具体使用方法就是使用特殊的 ASCII码,如换行符chr(10) 和 回车符chr(13) ,示例SQL如下:

            --换行
           select 'A'||chr(10)||'B' from dual;
           --回车
           select 'A'||chr(13)||'B' from dual;
           --回车换行
           select 'A'||chr(13)||chr(10)||'B' from dual;

附:常见ASCII编码

十进制编码 (对应)缩写字符(或功能/解释)
0 NUL(null) 空字符
1 SOH(start of headline) 标题开始
2 STX (start of text) 正文开始
3 ETX(end of text) 正文结束
4 EOT (end of transmission) 传输结束
5 ENQ (enquiry) 请求
6 ACK (acknowledge) 收到通知
7 BEL (bell) 响铃
8 BS (backspace) 退格
9 HT (horizontal tab) 水平制表符
10 LF (NL line feed, new line) 换行键
11 VT (vertical tab) 垂直制表符
12 FF (NP form feed, new page) 换页键
13 CR (carriage return) 回车键
14 SO (shift out) 不用切换
15 SI (shift in) 启用切换
16 DLE (data link escape) 数据链路转义
17 DC1 (device control 1) 设备控制1
18 DC2 (device control 2) 设备控制2
19 DC3 (device control 3) 设备控制3
20 DC4 (device control 4) 设备控制4
21 NAK (negative acknowledge) 拒绝接收
22 SYN (synchronous idle) 同步空闲
23 ETB (end of trans. block) 传输块结束
24 CAN (cancel) 取消
25 EM (end of medium) 介质中断
26 SUB (substitute) 替补
27 ESC (escape) 换码(溢出)
28 FS (file separator) 文件分割符
29 GS (group separator) 分组符
30 RS (record separator) 记录分离符
31 US (unit separator) 单元分隔符
32 space 空格
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 DEL(delete 删除)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值