我有像这样的 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
结果是;
通过此步骤,当我在结果中向下滚动时,没有错误 BUT ,我收到如下错误:
ORA-01422:精确提取返回超过请求的行数
ORA-06512:在“MARDATA.RISK_SASI”,第28行 01422. 00000 - “确切的提取返回超过请求的行数”
*原因:精确提取中指定的数字小于返回的行数 *操作:重写查询或更改请求的行数
我该如何解决这个问题?
答案 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>