ORA-01422: точная выборка возвращает больше запрошенного числа строк ORA-06512 - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь написать хранимую процедуру, чтобы номер транзакции возвращался к 01 каждый день, но когда я ее запускаю, все номера транзакций в этот день до 01 не увеличиваются.

, затем я добавляю

and (V_JML_RECORD = 1) THEN V_JML_RECORD: = V_JML_RECORD +1;

, и когда я запускаю его, я получаю ошибку ORA-01422;Есть ли точное точное возвращение запрошенного количества строк, которое может объяснить и решить мою проблему?

SELECT   TRIM (NAMA), TRIM (KD_KTR) AS KDKTR
INTO   V_NAMA, V_KDKTR
FROM   D_PRS
WHERE   TRIM (STB) = P_STB;

SELECT TO_CHAR (sysdate, 'MM') 
INTO V_BLNSKR
from dual;


SELECT TO_CHAR (sysdate, 'DD') 
INTO V_HRSKR
from dual;

SELECT COUNT(NOKAS) 
INTO V_JML_RECORD
FROM (
SELECT NOKAS,TGKAS,KTRASL FROM D_MSTHEADER_UKERJA WHERE TGKAS IN(
SELECT MAX(TGKAS) FROM D_MSTHEADER_UKERJA WHERE KTRASL=V_KDKTR)
)

IF (V_BLNSKR = '02')
AND (V_HRSKR = '27') THEN
  V_JML_RECORD := 1;

  ELSIF (V_BLNSKR = '02')
         AND (V_HRSKR = '27')
        AND (V_JML_RECORD = 1) THEN
 V_JML_RECORD := V_JML_RECORD +1;
 ELSE
   V_JML_RECORD := V_JML_RECORD +1;

  END IF;

1 Ответ

0 голосов
/ 28 февраля 2019

Чтобы немедленно решить вашу проблему, добавьте ROWNUM = 1 в запросе ниже, но правильный путь для вас - проверить, какую строку вы хотите получить, изучив результат вашего исходного запроса.При использовании функции INTO вам нужно только получить запрос SINGLE ROW.

SELECT   TRIM (NAMA), TRIM (KD_KTR) AS KDKTR
INTO   V_NAMA, V_KDKTR
FROM   D_PRS
WHERE   TRIM (STB) = P_STB AND ROWNM = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...