向下滚动结果时出现SQL错误

时间:2011-03-22 07:29:26

标签: sql database oracle

我有像这样的 SQL ; (在 Oracle SQL Developer 中)

SELECT A.HESAP_NO, A.TEKLIF_NO1 || '/' || A.TEKLIF_NO2 AS TEKLIF, A.MUS_K_ISIM, 
B.MARKA, C.SASI_NO, C.SASI_DURUM, D.TAS_MAR, RISK_SASI(A.TEKLIF_NO1, A.TEKLIF_NO2, C.SASI_NO) AS RISK,
MV_SASI(A.TEKLIF_NO1, A.TEKLIF_NO2, C.SASI_NO, SYSDATE) AS MV
FROM S_TEKLIF A,  S_URUN B, S_URUN_DETAY C, KOC_KTMAR_PR D
WHERE A.TEKLIF_NO1 || A.TEKLIF_NO2 = B.TEKLIF_NO1 || B.TEKLIF_NO2
AND A.TEKLIF_NO1 || A.TEKLIF_NO2 = C.TEKLIF_NO1 || C.TEKLIF_NO2
AND B.SIRA_NO = C.URUN_SIRA_NO
AND B.DISTRIBUTOR = D.DIST_KOD
AND B.MARKA = D.MARKA_KOD
AND B.URUN_KOD = D.TAS_KOD

结果是;

enter image description here

通过此步骤,当我在结果中向下滚动时,没有错误 BUT ,我收到如下错误:

  

ORA-01422:精确提取返回超过请求的行数
      ORA-06512:在“MARDATA.RISK_SASI”,第28行       01422. 00000 - “确切的提取返回超过请求的行数”
      *原因:精确提取中指定的数字小于返回的行数       *操作:重写查询或更改请求的行数

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

查看您的RISK_SASI函数。 我没有看到它,但我想在第28行你会发现类似的东西

SELECT <something> into <some variables>
FROM <somewhere>
WHERE <some condition>

如果有多行符合“某些条件”,则会获得ORA-01422。如果我的猜测是正确的,您应该更正此语句以返回一行。

该错误仅出现在A.TEKLIF_NO1,A.TEKLIF_NO2,C.SASI_NO的某些特定值上,这就是您在获取前几行时没有此错误的原因(在向下滚动时获取记录)< / p>