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

Drukowanie Oracle Sys_refcursor w Oracle SQL Developer 1.5

Musiałbyś zapętlić kursor ref i dla każdego znajdującego się w nim wiersza wydrukować poszczególne pola. W zaktualizowanej wersji musisz pobrać kursor do lokalnych zmiennych skalarnych, a nie do innego kursora referencyjnego:

set serveroutput on;
declare
  result sys_refcursor;
  lsn number; -- guessing the data type
begin
  emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
  loop
    fetch result into lsn; -- and other columns if needed
    exit when result%notfound;
    dbms_output.put_line(lsn);
  end loop;
end;
/

Zgadłem lsn jest liczbą, jeśli nie, to zadeklaruj ją jako właściwy typ. Jeśli kursor zwróci więcej niż jedną kolumnę, będziesz musiał zadeklarować zmienne lokalne dla każdej z nich i pobrać je wszystkie do nich, nawet jeśli wyświetlasz tylko jedną z nich.

Jeśli chcesz go tylko wyświetlić, możesz zamiast tego użyć zmiennej bind (zaznaczonej w bieżącej wersji i z powrotem do 1.5.0):

variable result refcursor

begin
  emp.emp360_utils.GET_EMPLOYEEs(222334, :result); 
end;
/

print result

Pamiętaj, że variable polecenie jest nie w declare blok; jest to polecenie SQL Developer, a nie polecenie PL/SQL. Tak jak print , chociaż oba są udokumentowane tylko w dokumentacji SQL*Plus. Zwróć też uwagę na dwukropek na początku :result wewnątrz bloku, co wskazuje, że jest to zmienna wiązania, a nie lokalna zmienna PL/SQL.



  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 zmienić format daty z MM/DD/RRRR na RRRR-MM-DD w PL/SQL?

  2. Uzyskaj liczbę UNIKALNYCH rekordów OGÓLNIE na wartość

  3. XMLAGG z problemem RTRIM

  4. Pomiń błąd SQL*PLUS w skrypcie wsadowym

  5. Problem z konwersją Oracle SQL DATE przy użyciu iBATIS przez Java JDBC