SQL> SELECT /*+ all_rows */AE10.AAB999 AE10_AAB999,
2 201007 START_DATE,
3 201007 END_DATE,
4 AE10.AAB001 AE10_AAB001,
5 (SELECT AAB119
6 FROM ZB21
7 WHERE AAB001 = AE10.AAB001
8 AND AAE100 = '1') PER_NUMBER,
9 (SELECT AAB120
10 FROM ZB21
11 WHERE AAB001 = AE10.AAB001
12 AND AAE100 = '1') TOTAL_BASE,
13 (SELECT AAB120 * 0.03
14 FROM ZB21
15 WHERE AAB001 = AE10.AAB001
16 AND AAE100 = '1') COLLECT_MONEY,
17 (SELECT AAB033
18 FROM ZB21
19 WHERE AAB001 = AE10.AAB001
20 AND AAE100 = '1') COLLECT_TYPE,
21 AE10.AAE044 AE10_AAE044,
22 AE10.AAB019 AE10_AAB019
23 FROM AE10
24 WHERE NOT EXISTS (SELECT 1
25 FROM AB07
26 WHERE AB07.AAZ010 = AE10.AAB001
27 AND AAE002 = 201007
28 AND AAA115 = '0'
29 and aae140 = '21')
30 AND EXISTS (SELECT 1
31 FROM AB02
32 WHERE AAB001 = AE10.AAB001
33 AND AAB051 = '1'
34 AND AAE140 = '21')
35 AND EXISTS (SELECT 1
36 FROM ZB21
37 WHERE AAB001 = AE10.AAB001
38 AND AAE100 = '1'
39 AND AAE041 <= 201007
40 AND NVL(AAE042, 201007) >= 201007);
ERROR:
ORA-01427: single-row subquery returns more than one row
已选择300行。
已用时间: 00: 00: 02.47
晚上做账的时候用户反映程序报错,截取到报错的SQL,在SQLPLUS里执行结果如上。我一直以为如果有这种错误,是执行不会返回结果就报错,可没想到都返回了300行了,才报的错,大家有什么看法,正常吗?SQL语句我还在看。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-666768/,如需转载,请注明出处,否则将追究法律责任。
Oracle ACE组成员,DBGeeK用户组发起人。曾在DTCC、ORACLE技术嘉年华、Gdevops等公开场合做过数据库技术专题分享,2017年应Oracle邀请在世界最大的数据库会议OOW上做技术分享。组织翻译了《拨云见日,解密Oracle ASM内核》一书。
注册时间:
2009-07-04
2383748
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员