Nói chung, đây không phải là một thiết kế đặc biệt tốt - lưu trữ SQL trong các bảng và thực thi động nó gây ra tất cả các loại vấn đề bảo mật và bảo trì.
Có thể (mặc dù đã quá muộn vào ngày thứ Sáu bắt đầu quá sớm để tôi cố gắng tìm ra) để thực hiện một truy vấn XML thực sự thú vị dọc theo các dòng của truy vấn này chạy đếm (*) dựa trên mọi bảng trong lược đồ điều đó sẽ thực hiện tất cả trong một truy vấn.
Tuy nhiên, đối với đại đa số các lập trình viên, cách tiếp cận đơn giản hơn sẽ là lặp lại các truy vấn, chạy chúng một lần và lưu trữ kết quả ở đâu đó. Ví dụ, biến cục bộ có khả năng sẽ được thêm vào một tập hợp các số lượng.
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;
Vì bạn đang cố gắng tạo một dạng xem, bạn có thể lấy logic này và đặt nó vào một hàm bảng pipelined. Bạn sẽ thực hiện một PIPE ROW
để trả về dữ liệu trong vòng lặp. Sau đó, chế độ xem của bạn có thể được tạo trên đầu hàm bảng pipelined.