sql >> Database >  >> RDS >> Oracle

Kan een Oracle SQL-query een string-query uitvoeren die is geselecteerd uit een tabel?

Over het algemeen is dit geen bijzonder goed ontwerp - het opslaan van SQL in tabellen en het dynamisch uitvoeren ervan introduceert allerlei beveiligings- en onderhoudsproblemen.

Het is waarschijnlijk mogelijk (hoewel het veel te laat is op een vrijdag die veel te vroeg begon voor mij om het te proberen te achterhalen) om een ​​echt coole XML-query te doen in de trant van deze query die een telling(*) uitvoert voor elke tabel in het schema dat zou dit allemaal in één query doen.

Voor de overgrote meerderheid van programmeurs zou de eenvoudigere benadering zijn om de query's te herhalen, ze een voor een uit te voeren en de resultaten ergens op te slaan. Mogelijk wordt de lokale variabele bijvoorbeeld toegevoegd aan een verzameling tellingen.

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;

Aangezien u een weergave probeert te maken, kunt u deze logica gebruiken en deze in een pijplijntabelfunctie plaatsen. Je zou een PIPE ROW . doen om gegevens binnen de lus te retourneren. Uw weergave kan dan worden gemaakt bovenop de functie voor de pijplijntabel.



  1. Lange binaire (onbewerkte gegevens) strings opslaan

  2. magento printvriendelijke pagina voor producten

  3. Probleem met heredoc en PHP

  4. Ecto-query en aangepaste MySQL-functie met variabele arity