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

Jak używać rekordu do zapętlenia kursora ref?

Nie można zdefiniować typu rekordu na podstawie słabo określonego KURSORA REF. Ponieważ typ kursora zdefiniowany w pakiecie może zostać użyty do zwrócenia danych z dowolnego zapytania z dowolnymi kolumnami, kompilator PL/SQL nie może określić odpowiedniego typu rekordu, do którego dane mają zostać pobrane.

Jeśli znasz rzeczywiste dane zwracane z funkcji, możesz zadeklarować rekord tego typu, do którego będą pobierane dane. Na przykład, jeśli zadeklaruję funkcję, która zwraca słabo wpisany typ kursora, ale wiem, że kursor naprawdę zwraca kursor oparty na EMP tabeli, mogę pobrać dane do EMP%ROWTYPE rekord (zauważ, że SYS_REFCURSOR jest zdefiniowanym przez system słabo typowanym typem 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. Jak przekazać argumenty do skryptu PL/SQL w wierszu poleceń za pomocą SQLPLUS?

  2. Formatowanie DATE w Oracle

  3. Jak zainstalować Oracle SQL Developer 18.2 w systemie Windows 10?

  4. Regex, aby usunąć słowa z czarnej listy ze zdania

  5. Wybierz ciąg jako liczbę w Oracle