Nie możesz utworzyć %ROWTYPE zmienna dla nieznanej tabeli i nie możesz statycznie odwoływać się do nazw kolumn, jeśli nie znasz nazwy tabeli w czasie kompilacji.
Możesz użyć pakietu dbms_sql do obsługi całkowicie dynamicznych instrukcji SQL. Musisz przygotować instrukcję SQL, opisać kolumny, aby poznać liczbę kolumn i ich typy danych, powiązać odpowiednie zmienne, a następnie pobrać dane. Jest to znacznie bardziej kłopotliwy sposób pisania kodu niż przykład, który zamieściłeś, ale zapewnia niezwykłą elastyczność.
W dokumentacji, do której się połączyłem, jest kilka przykładów użycia pakietu dbms_sql. Możesz również sprawdzić funkcję Toma Kyte'a dump_csv, która zapisuje wynik dowolnego zapytania do pliku CSV przy użyciu UTL_FILE . Jeśli naprawdę chcesz zapisać dane do DBMS_OUTPUT , możesz po prostu zastąpić UTL_FILE połączenia z DBMS_OUTPUT . Ale jestem prawie pewien, że chcesz zrobić coś bardziej przydatnego niż tylko zapisywanie danych do DBMS_OUTPUT bufor, więc procedura Toma jest prawdopodobnie bliższa temu, co naprawdę próbujesz osiągnąć.