Możesz to zaimplementować, używając słabo określonego kursora odwołania jako typu zwracanego. Jest to szczególnie łatwe do zaimplementowania z interfejsu klienta przy użyciu JDBC, ponieważ zwracany typ kursora można przejrzeć tak jak każdy wynik zapytania, a metadane można odpytywać za pomocą ResultSet.getMetaData(). Oto przykład:
CREATE OR REPLACE PROCEDURE retrieve_info(field_id in integer, p_cursor in out sys_refcursor)
AS
BEGIN
open p_cursor for 'select * from emp';
END;
Zapytanie w cudzysłowie może być dowolnym, który zwraca dowolny typ, dla dowolnej liczby kolumn.