mit diesem Fehler stecken ...ORA-01422: genaue Rückkehr holen mehr als die angeforderte Anzahl von Zeilen
DECLARE
AVGRUNTIME number(10,0);
PERFCATEGORYRANGELOCOUNT number(10,0);
PERFCATEGORYRANGEHICOUNT number(10,0);
DW_LOW number(10,0);
DW_HI number(10,0);
CURSOR LC_ABC IS
select distinct(ap.dwprocessid)
from auditprocess ap, dwprocess d
where ap.dwprocessid = d.dwprocessid
and ap.insertts > sysdate - 61
and dwprocessmonitorind = 'Y';
BEGIN
FOR REC IN LC_ABC
LOOP
select ((ap.LASTUPDATETS - INSERTTS)*24*60*60) as AVGRUNTIME,
(.1 * ((ap.LASTUPDATETS - INSERTTS)))as PERFCATEGORYRANGELOCOUNT ,
(1.9 * ((ap.LASTUPDATETS - INSERTTS)))as PERFCATEGORYRANGEHICOUNT
INTO AVGRUNTIME, PERFCATEGORYRANGELOCOUNT, PERFCATEGORYRANGEHICOUNT
from auditprocess ap
where ap.dwprocessid = rec.dwprocessid
and insertts > sysdate - 61
group by (ap.LASTUPDATETS - INSERTTS);
[Fehler] [1] in Zeile 1 ORA-01422: genaue holen gibt mehr als angefordert Anzahl der Zeilen ORA-06512: bei Zeile 27
Die Fehlermeldung scheint ziemlich klar zu sein - Ihre Abfrage zu 'auditprocess' gibt mehr als eine Zeile zurück, aber Sie versuchen, die Zeilenwerte in einzelne Zeilen einzugeben. bewertete Variablen. Zusätzlich: Sie wählen aus 'ap', aber in der WHERE-Klausel verweisen Sie auch auf 'rec'. Dies sollte Ihnen einen Fehler vor dem zeigen, den Sie zeigten; Also ... bist du sicher, was du gepostet hast, ist dein EXACT-Code? Ich neige dazu, es nicht zu glauben. – mathguy
@mathguy rec ist der Datensatz vom Cursor in der for-Schleife. Er muss Alias für distinct() als dwprocessid setzen. Für den anderen hast du recht. – Mottor
@mathguy rec ist vom Cursor – vercelli