sql >> Database teknologi >  >> RDS >> Oracle

Hvordan bruger man record til at sløjfe en ref-markør?

Du kan ikke definere en posttype baseret på en svagt indtastet REF CURSOR. Da markørtypen, der er defineret i pakken, kan bruges til at returnere data fra en vilkårlig forespørgsel med vilkårlige kolonner, kan PL/SQL-kompileren ikke bestemme en passende posttype at hente dataene ind i.

Hvis du kender de faktiske data, der returneres fra funktionen, kan du erklære en post af den type for at hente dataene ind. For eksempel, hvis jeg erklærer en funktion, der returnerer en svagt skrevet markørtype, men jeg ved, at markøren virkelig returnerer en markør baseret på EMP tabel, kan jeg hente dataene ind i en EMP%ROWTYPE post (bemærk at SYS_REFCURSOR er en systemdefineret REF CURSOR-type, der er svagt skrevet)

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. Hvordan udfører man flere mysql-forespørgsler sammen i PHP?

  2. Skal jeg bruge JDBC getNString() i stedet for getString()?

  3. Sådan bruger du svar fra en Jmeter JDBC-anmodning i en HTTP-anmodning

  4. Django-indstilling:psycopg2.OperationalError:FATAL:Peer-godkendelse mislykkedes for brugeren indivo