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

Как да използвам запис за цикъл на референтен курсор?

Не можете да дефинирате тип запис въз основа на слабо въведен REF CURSOR. Тъй като типът курсор, дефиниран в пакета, може да се използва за връщане на данни от произволна заявка с произволни колони, PL/SQL компилаторът не може да определи подходящ тип запис, в който да извлече данните.

Ако знаете действителните данни, върнати от функцията, можете да декларирате запис от този тип, в който да извлечете данните. Например, ако декларирам функция, която връща слабо въведен тип курсор, но знам, че курсорът наистина връща курсор въз основа на EMP таблица, мога да извлека данните в EMP%ROWTYPE запис (обърнете внимание, че SYS_REFCURSOR е дефиниран от системата слабо типизиран тип REF CURSOR)

create or replace function f1
  return sys_refcursor
is
  l_rc sys_refcursor;
begin
  open l_rc
   for select *
         from emp;
  return l_rc;
end;

declare
  l_rc sys_refcursor;
  l_emp emp%rowtype;
begin
  l_rc := f1;
  loop
    fetch l_rc into l_emp;
    exit when l_rc%notfound;
    dbms_output.put_line( l_emp.empno );
  end loop;
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. Как да предавам динамично стойности към IN оператор?

  2. Oracle DataReader връща 1 ред, но методът Read връща false

  3. Oracle:таблицата се променя

  4. Заредете огромен csv файл в таблицата на базата данни на oracle с помощта на Pyspark

  5. Oracle - сравняване на стойността по подразбиране на колона