sql >> Database teknologi >  >> RDS >> Oracle

Kan en oracle SQL-forespørgsel udføre en strengforespørgsel valgt fra en tabel?

Generelt er dette ikke et særligt godt design - at gemme SQL i tabeller og dynamisk eksekvere det introducerer alle mulige sikkerheds- og vedligeholdelsesproblemer.

Det er nok muligt (selvom det er alt for sent på en fredag, der startede alt for tidligt til, at jeg kunne prøve at finde ud af det) at lave en rigtig fed XML-forespørgsel i stil med denne forespørgsel, der kører en optælling(*) mod hver tabel i skemaet det ville gøre det hele i én forespørgsel.

For langt de fleste programmører ville den nemmere tilgang dog være at gå hen over forespørgslerne, køre dem én ad gangen og gemme resultaterne et sted. Potentielt vil den lokale variabel f.eks. blive tilføjet til en samling af tællinger.

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;

Da du forsøger at oprette en visning, kan du tage denne logik og sætte den i en pipelinet tabelfunktion. Du skal lave en PIPE ROW at returnere data i løkken. Din visning kunne derefter oprettes oven på den pipelinede tabelfunktion.



  1. Hvordan kan jeg se alle fremmednøgler til en tabel eller kolonne?

  2. Arkiver hang på grund af KOMPATIBEL ORA-16484

  3. Itererer over heltal[] i PL/pgSQL

  4. Hvad er SQLite