返回部分結果後,才報單行子查詢返回多行。

wei-xh發表於2010-06-30
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章