Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Một truy vấn SQL oracle có thể thực hiện một truy vấn chuỗi được chọn từ một bảng không?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm Oracle biên dịch thành công nhưng ném lỗi khi thực thi PLS-00221:không phải là một thủ tục hoặc không được xác định

  2. Tìm kiếm văn bản mờ trong Oracle

  3. Đếm số hàng đã nối trong phép nối bên trái

  4. sqldeveloper xuất ra kết quả chính xác cho số đếm (*) trong khi sqlplus cho kết quả bằng không

  5. Cách thực hiện Tham gia bên ngoài trên> 2 Bàn (Oracle)