Oracle
 sql >> Baza danych >  >> RDS >> Oracle

pobieranie z funkcji zwracającej kursor ref do nagrania

Podejrzewam, że uważasz, że kursor powinien pobierać wiersze z REFCURSOR. To nie jest. REFCURSOR sam w sobie jest kursorem, nie używasz innego kursora do wybierania z niego.

Bieżący kursor pobiera pojedynczy wiersz z pojedynczą kolumną zawierającą wynik wywołania funkcji. Który jest record_cursor nie record_name , więc otrzymujesz niezgodność typu.

Podejrzewam, że naprawdę chcesz zrobić coś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORACLE 12.2.01 wybieranie kolumn z różnych tabel o podobnych nazwach --> użyty wewnętrzny identyfikator kolumny

  2. Czy Oracle udostępnia wbudowaną tabelę walut, którą mogę wykorzystać jako ograniczenia?

  3. Funkcja tabeli Oracle z CTE

  4. Jak rozwiązać ORA-29280:nieprawidłowa ścieżka do katalogu

  5. Jak połączyć się z php do Oracle DB 12c?