Kode fejler i Oracle Reports
HejsaHar desværre fået en fejl, der ikke er til at gennemskue... Jeg er bestemt ikke Oracle ekspert og kunne derfor godt bruge en hånd.
Jeg sidder med en en Oracle Report der fejler med en besked om at After Form triggeren fejler... jeg har så efterfølgende været inde i Oracle Reports og finde program Unit'en, for koden. Så vidt jeg umiddelbart kan se er det en gang dårlig PL/SQL kode der skal afgøre om der er flere enheder i en aktuel tabel, som hedder table_structure, hvis der er et parameter der hedder "ALL" som er sat.
For mig ser koden noget rodet og dårlig navngivet ud, har jeg ret og hvordan kan jeg evt. rette det op?
function AfterPForm return boolean is
begin
:P_STRUCTURE_ID_THIRD := :P_STRUCTURE_ID ;
IF UPPER(:P_SORTING) = 'ELEMENTS' THEN
:P_ORDER := ' ORDER BY RN,INSPECTIONDATE,CONDITIONRATING ';
ELSE
:P_ORDER := 'ORDER BY INSPECTIONDATE,CONDITIONRATING, RN' ;
END IF;
IF UPPER(:P_STRUCTURE_ID) = 'ALL' THEN
SELECT S.ID
INTO :P_STRUCTURE_ID_FIRST
FROM table_structure S
WHERE ROWNUM = 1;
:P_ELEMENT_ID_SECOND := ' AND VIEW_STRUCTURE_ELEMENTS.BASE_ID = VIEW_STRUCTURE_ELEMENTS.BASE_ID
AND VIEW_STRUCTURE_ELEMENTS.BASE_LEVEL =1';
if UPPER(:P_ELEMENTS) = 'YES' then
:P_STRUCTURE_ID := ' AND BASE_ID = BASE_ID ';
else
:P_STRUCTURE_ID := ' AND BASE_ID = BASE_ID AND BASE_LEVEL = 2 ';
end if;
ELSE
:P_ELEMENT_ID_SECOND := ' AND VIEW_STRUCTURE_ELEMENTS.BASE_ID IN (' ||:P_STRUCTURE_ID ||') ';
:P_STRUCTURE_ID_FIRST := substr(:P_STRUCTURE_ID,1,INSTR(:P_STRUCTURE_ID,',')-1);
IF :P_STRUCTURE_ID_FIRST IS NULL THEN
:P_STRUCTURE_ID_FIRST := :p_structure_id;
END IF;
if UPPER(:P_ELEMENTS) = 'YES' then
:P_STRUCTURE_ID := ' AND BASE_ID IN (select B.ID from BASECONSTRUCTION B ' ||
'start with B.ID in ( '|| :P_STRUCTURE_ID ||') ' || ' connect by NOCYCLE prior B.ID = B.PARENTID ) ';
else
:P_STRUCTURE_ID := ' AND BASE_ID IN (' ||:P_STRUCTURE_ID ||') ';
end if;
END IF;
RETURN (TRUE);
EXCEPTION
WHEN OTHERS THEN
RETURN (FALSE);
end;