sql >> Databáze >  >> RDS >> Oracle

Jak použít záznam k opakování referenčního kurzoru?

Nemůžete definovat typ záznamu na základě slabého typu REF CURSOR. Vzhledem k tomu, že typ kurzoru definovaný v balíčku lze použít k vrácení dat z libovolného dotazu s libovolnými sloupci, kompilátor PL/SQL nemůže určit vhodný typ záznamu, do kterého by se data načetla.

Pokud znáte skutečná data vracená z funkce, můžete deklarovat záznam tohoto typu, do kterého se data načítají. Pokud například deklaruji funkci, která vrací slabě napsaný typ kurzoru, ale vím, že kurzor skutečně vrací kurzor na základě EMP tabulky, mohu načíst data do EMP%ROWTYPE záznam (všimněte si, že SYS_REFCURSOR je systémově definovaný slabě typový REF CURSOR typ)

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. MySQL – Tato verze MySQL zatím nepodporuje poddotaz 'LIMIT &IN/ALL/ANY/SOME

  2. Dotaz na seznam počtu záznamů v každé tabulce v databázi

  3. Najděte duplicitní řetězce v databázi

  4. Jak nakonfigurovat PostgreSQL, aby přijímal všechna příchozí připojení