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.