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

Czy zapytanie Oracle SQL może wykonać zapytanie łańcuchowe wybrane z tabeli?

Ogólnie rzecz biorąc, nie jest to szczególnie dobry projekt — przechowywanie SQL w tabelach i dynamiczne jego wykonywanie wprowadza różnego rodzaju problemy związane z bezpieczeństwem i konserwacją.

Prawdopodobnie jest możliwe (chociaż jest za późno w piątek, który zaczął się zbyt wcześnie, abym mógł to rozgryźć), aby wykonać naprawdę fajne zapytanie XML w stylu to zapytanie, które uruchamia count(*) dla każdej tabeli w schemacie to zrobiłoby to wszystko w jednym zapytaniu.

Jednak dla zdecydowanej większości programistów prostszym podejściem byłoby zapętlenie zapytań, uruchamianie ich pojedynczo i przechowywanie wyników gdzieś. Potencjalnie zmienna lokalna zostałaby dodana na przykład do zbioru zliczeń.

FOR q IN (SELECT sql_text FROM query_table)
LOOP
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM (' || q.sql_text || ')'
     INTO some_local_variable;
  <<do something with the local variable>>
END LOOP;

Ponieważ próbujesz utworzyć widok, możesz wziąć tę logikę i umieścić ją w funkcji tabeli potokowej. Zrobiłbyś PIPE ROW do zwracania danych w pętli. Twój widok może następnie zostać utworzony na górze funkcji tabeli potokowej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01036:nieprawidłowa nazwa/numer zmiennej podczas wywoływania zapisanej funkcji

  2. Jak korzystać z join na trzech stołach

  3. Zamek Liquibase - powody?

  4. Jak mogę użyć FOR UPDATE z JOIN w Oracle?

  5. Migracja danych z Oracle do SQL Server