Uw probleem is dat uw zoekopdracht een paar letterlijke tekenreekswaarden selecteert zonder aliassen in te stellen:
select ..., 'IPU', ... , 'IPU', ..., 'EUR', ...
In het bovenstaande geval zal Oracle automatisch lelijke aliassen genereren die er ongeveer zo uitzien:
select ..., 'IPU' AS "'IPU'", ..., 'IPU' AS "'IPU'", ..., 'EUR' AS "'EUR'", ...
Dus zoals je kunt zien, heb je nu 3 erg lelijke kolomnamen die erg onhandig zijn om mee te werken, en 2 ervan zijn dubbel, wat resulteert in de foutmelding die je krijgt.
Overweeg om ze de juiste verschillende aliassen te geven om de dubbelzinnigheid te voorkomen. Dit is slechts een voorbeeld, maar u zou een meer betekenisvolle alias moeten geven volgens de betekenis van de waarde:
select ..., 'IPU' AS some_col_1, ..., 'IPU' AS some_col_2, ..., 'EUR' AS some_col_3, ...
Het grappige is dat je niet . bent gebruikt momenteel die 3 waarden bij het lezen van de query in uw cursor voor lus. Wanneer u uw cursor leest/doorloopt, in plaats van te proberen de 3 waarden van de cursor te lezen, codeert u de waarden gewoon opnieuw terwijl u ze afdrukt.
Dus in feite, als je er echt niet om geeft de 3 waarden van de cursor te lezen, verwijder ze dan gewoon helemaal uit de query. Vervang anders uw hardgecodeerde waarden van uw DBMS_OUTPUT.PUT_LINE(...)
met de aliassen die u instelt.
Dus zodra uw vraag is opgelost, in plaats van:
DBMS_OUTPUT.PUT_LINE(... || 'IPU' || ... || 'IPU' || ... || 'EUR' || ...);
U zou de cursor waarschijnlijk als volgt moeten gebruiken:
DBMS_OUTPUT.PUT_LINE(... || De_Dub_rec.some_col_1 || ... || De_Dub_rec.some_col_2 || ... || De_Dub_rec.some_col_3 || ...);