Ich arbeite mit Oracle PL/SQL-Cursorn. Ich habe einen Cursor erstellt, kann ihn aber nicht öffnen. Ich erhalte Fehler wie:Fehler beim Öffnen des Cursors aus dynamischem SQL
Fehler (51,13): PLS-00320: die Erklärung der Art dieser Ausdruck ist unvollständig oder fehlerhaft
ich Fehler erhalten zum Öffnen und Cursor-Anweisung .
Dies ist mein Code:
DECLARE
uldid uldlog.uldid%type;
flightlegid uldlog.flightlegid%type;
TYPE rec IS RECORD (uldid number, uldlog number);
--CURSOR some_cursor RETURN rec;
CURSOR distUld return rec;
ress rec;
BEGIN
MainQuery1 :='select uldlog.uldid, uldlog.flightlegid
from uldlog
INTO distUld
INNER JOIN flightulds ON uldlog.uldid = flightulds.flightuldsid
INNER JOIN M_ULDTYP ON FLIGHTULDS.ULDTYPEID = M_ULDTYP.ULDTYPID
INNER JOIN FLIGHTLEG ON FLIGHTLEG.FLIGHTLEGID = FLIGHTULDS.INFLIGHTLEGID
INNER JOIN FLIGHTS ON FLIGHTLEG.FLIGHTID = FLIGHTS.FLIGHTID
INNER JOIN M_AIRLINE A on A.AIRLINEID = FLIGHTS.AIRLINEID
INNER JOIN m_flighttyp on m_flighttyp.Id=FLIGHTLEG.SERVICETYPEID
INNER JOIN m_pax_fr on m_pax_fr.id=m_flighttyp.pax_fr_id
where flightulds.uldtypeid IN (3,4,5,8,9)';
FinalQuery1 := MainQuery1 || CommonFilterCluase || ' GROUP BY uldlog.uldid, uldlog.flightlegid';
EXECUTE IMMEDIATE FinalQuery1;
OPEN distUld;
LOOP
FETCH distUld into ress;
EXIT WHEN distUld%notfound;
NumberOfUldsDistinctEntires := NumberOfUldsDistinctEntires +1;
IF fn_bdtimedifference(uldid,flightlegid,FlightTypeIds,CargoType,CargoPriority,UldTypes,SlaStatusCommaSeparatedNumbers) is null then
Bd_Avg_Time := Bd_Avg_Time + 0;
Else
Bd_Avg_Time := Bd_Avg_Time + fn_bdtimedifference(uldid,flightlegid,FlightTypeIds,CargoType,CargoPriority,UldTypes,SlaStatusCommaSeparatedNumbers);
END IF;
END LOOP;
CLOSE distUld;
END;
Was mache ich falsch?