Oracle
 sql >> база данни >  >> RDS >> Oracle

PLS-00402:изисква се псевдоним в списъка SELECT на курсора, за да се избегнат дублирани имена на колони

Проблемът ви е, че заявката ви избира няколко стойности на литерален низ, без да задава никакви псевдоними:

select ..., 'IPU', ... , 'IPU', ..., 'EUR', ...

В горния случай Oracle автоматично ще генерира грозни псевдоними, които изглеждат по следния начин:

select ..., 'IPU' AS "'IPU'", ..., 'IPU' AS "'IPU'", ..., 'EUR' AS "'EUR'", ...

Така че, както можете да видите, сега имате 3 много грозни имена на колони, с които е много неудобно да се работи, и 2 от тях се дублират, което води до грешката, която получавате.

Помислете дали да им дадете подходящи различни псевдоними, за да избегнете неяснотата. Това е само пример, но трябва да дадете по-смислен псевдоним според значението на стойността:

select ..., 'IPU' AS some_col_1, ..., 'IPU' AS some_col_2, ..., 'EUR' AS some_col_3, ...

Най-смешното е, че виенесте в момента използва тези 3 стойности, когато чете заявката във вашия курсорен цикъл за. Когато четете/минавате през курсора, вместо да се опитвате да прочетете 3-те стойности от курсора, вие просто кодирате отново стойностите, докато ги отпечатвате.

Така че всъщност, ако наистина не ви е грижа да четете 3-те стойности от курсора, просто ги премахнете напълно от заявката. В противен случай заменете вашите твърдо кодирани стойности от вашия DBMS_OUTPUT.PUT_LINE(...) с псевдонимите, които сте задали.

Така че след като заявката ви бъде коригирана, вместо:

DBMS_OUTPUT.PUT_LINE(... || 'IPU' || ... || 'IPU' || ... || 'EUR' || ...);

Вероятно трябва да използвате курсора така:

DBMS_OUTPUT.PUT_LINE(... || De_Dub_rec.some_col_1 || ... || De_Dub_rec.some_col_2 || ... || De_Dub_rec.some_col_3 || ...);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка за разрешаване на транзитивни зависимости в базата данни

  2. ODBC администраторът не може да намери файл с имена на Oracle TNS

  3. Как да използвам oracle client 11.2 с php (xampp) на win7 x64

  4. Сравнение на трети страни Oracle .NET доставчици

  5. Отиване на раздел Конкретен във формуляри на Oracle