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

извличане от функция, връщаща референтен курсор за запис

Подозирам, че мислите, че вашият курсор трябва да извлича редове от REFCURSOR. Не е. REFCURSOR сам по себе си е курсор, не използвате друг курсор, за да изберете от него.

Това, което прави текущият ви курсор, е да извлича един ред с една колона, съдържаща резултата от извикването на функцията. Което е record_cursor не е record_name , така че получавате несъответствие на типа.

Подозирам, че това, което наистина искате да направите, е нещо подобно:

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 SQL заявка за завършване на групиране на множество колони в една таблица, съдържаща ~ 7 000 000 записа

  2. Oracle получава дата, форматирана като низ между две дати

  3. Как мога да получа имена на колони от таблица в Oracle?

  4. Търсене в база данни на Oracle за таблици с конкретни имена на колони?

  5. Клауза „In“ в SQL сървър с множество колони