sql >> Database teknologi >  >> RDS >> Oracle

hent fra funktion returnerer en ref-markør til optagelse

Jeg formoder, at du mener, at din markør skal hente rækker fra REFCURSOR. Det er ikke. REFCURSOR er i sig selv en markør, du bruger ikke en anden markør til at vælge fra den.

Hvad din nuværende markør gør, er at hente en enkelt række med en enkelt kolonne, der indeholder resultatet af funktionskaldet. Som er en record_cursor ikke et record_name , så du får en type uoverensstemmelse.

Jeg formoder, at det du virkelig vil gøre er sådan noget her:

declare
  symbol_cursor  package_name.record_cursor;
  symbol_record  package_name.record_name;
begin
  symbol_cursor := package_name.function_name('argument');
  loop
    fetch symbol_cursor into symbol_record;
    exit when symbol_cursor%notfound;

    -- Do something with each record here, e.g.:
    dbms_output.put_line( symbol_record.field_a );

  end loop;

  CLOSE symbol_cursor;

end;


  1. SQL-syntaks for hvis eksisterer

  2. Opret beregnet kolonne ved hjælp af data fra en anden tabel

  3. Hvordan forhindrer man mySQL i at nulstille automatisk stigningsværdi?

  4. Relationelle vs. ikke-relationelle databaser – Del 1