sql >> Database >  >> RDS >> Oracle

ophalen van functie die een ref-cursor retourneert om op te nemen

Ik vermoed dat je denkt dat je cursor rijen moet ophalen uit de REFCURSOR. Het is niet. De REFCURSOR is zelf een cursor, u gebruikt geen andere cursor om er uit te selecteren.

Wat uw huidige cursor doet, is een enkele rij ophalen, met een enkele kolom, die het resultaat van de functieaanroep bevat. Dat is een record_cursor geen record_name , dus je krijgt een niet-overeenkomend type.

Ik vermoed dat wat je echt wilt doen zoiets is als dit:

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. Hoe de mysql-tabelstructuur zonder gegevens dumpen met een SQL-query?

  2. FOUT:SQLSTATE [HY000] [2002] Er kon geen verbinding worden gemaakt omdat de doelcomputer dit actief weigerde

  3. Met behulp van SQL Server opgeslagen procedures van Python (pyodbc)

  4. De zaak van de kardinaliteit Schatting rode haring