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

jak przekazać nazwę tabeli jako parametr do procedury składowanej?

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ąć.




  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 pozyskać pracowników ze swoimi menedżerami

  2. Błąd podczas wykonywania pakietu

  3. problem z funkcją to_date z sysdate

  4. Ucieczka przed symbolami wieloznacznymi w LIKE

  5. Jak uniknąć błędów mutacji tabel