sql >> Database >  >> RDS >> Oracle

PLS-00402:alias vereist in SELECT lijst van cursor om dubbele kolomnamen te vermijden

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 || ...);


  1. django quiz-app-model voor meerkeuzevragen

  2. Converteer PostgreSQL-array naar PHP-array

  3. Verbinding maken met AWS RDS via PDO

  4. Foutcode:1064 in mysql