Ошибка SQL при прокрутке вниз результатов - PullRequest
0 голосов
/ 22 марта 2011

У меня есть 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

На этом шаге ошибки нет НО когда я прокручиваю вниз в Результатах , я получаю ошибку, подобную этой:

ORA-01422: точная выборка возвращает больше, чем запрошенное количество строк
ORA-06512: в «MARDATA.RISK_SASI», строка 28
01422. 00000 - «точное извлечение возвращает больше, чем запрошенное количество строк» ​​
* Причина: число, указанное в точном извлечении, меньше возвращаемых строк.
* Действие: переписать запрос или изменить количество запрашиваемых строк

Как решить эту проблему?

1 Ответ

4 голосов
/ 22 марта 2011

Посмотрите на свою функцию RISK_SASI.Я не вижу этого, но я предполагаю, что в 28-й строке вы найдете что-то вроде этого

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

Когда существует более одной строки, которая удовлетворяет «некоторому условию», вы получаете ORA-01422.Если мои предположения верны, вы должны исправить это утверждение, чтобы оно возвращало ровно одну строку.

Ошибка появляется только для некоторых конкретных значений A.TEKLIF_NO1, A.TEKLIF_NO2, C.SASI_NO, поэтому вы не 'эта ошибка возникает при извлечении первых нескольких строк (записи извлекаются при прокрутке вниз)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...