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

Posted

技术标签:

【中文标题】向下滚动结果时出现 SQL 错误【英文标题】:SQL Error when I scroll down the results 【发布时间】:2011-03-22 07:29:25 【问题描述】:

我有一个这样的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

结果是;

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

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

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

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

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

当满足“某些条件”的行不止一行时,您会得到 ORA-01422。如果我的猜测是正确的,您应该更正此语句以准确返回一行。

该错误仅针对 A.TEKLIF_NO1、A.TEKLIF_NO2、C.SASI_NO 的某些特定值出现,这就是为什么您在获取前几行时没有此错误(向下滚动时会获取记录)

【讨论】:

以上是关于向下滚动结果时出现 SQL 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的导航栏在向下滚动时不隐藏而在向上滚动时出现?

如果稍微向下滚动,在画布上拖动文本时出现问题

部分的 UITableView 标题仅在向下滚动时出现

UIRefreshControl 在启用 preferLargeTitles 的情况下向下滚动时出现奇怪的跳转

在android列表视图中向下滚动时出现***Exception

在 Flutter 中向下滚动 ListView.builder 时出现不需要的动画