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

Tại sao ddl tĩnh không được phép trong PL / SQL?

Câu trả lời là PL / SQL không hỗ trợ tính đa hình động. nó chỉ hỗ trợ đa hình tĩnh vì

Tất cả PL / SQL tạo ra một "DIANA" -> Ký hiệu thuộc tính trung gian mô tả cho Ada, một ngôn ngữ trung gian có cấu trúc cây. DIANA được sử dụng trong nội bộ trình biên dịch.

Tại thời điểm biên dịch, mã nguồn PL / SQL được dịch thành mã hệ thống và tạo ra DIANA tương ứng. Bây giờ hãy nghĩ nếu có một câu lệnh DDL như câu lệnh tạo bảng mà tại thời điểm biên dịch không tồn tại, nó sẽ được tạo sau khi chạy chương trình. Làm thế nào để công cụ PL / SQL của bạn tạo DIANA sau đó ????

DIANA đóng một vai trò quan trọng trong PL / SQL để kiểm tra / xác nhận rằng chương trình con. điều này là bắt buộc vì như chúng ta biết rằng một chương trình con có thể sử dụng các đối tượng cơ sở dữ liệu như Bảng, Dạng xem, Từ đồng nghĩa hoặc các procs được lưu trữ khác. có thể là các đối tượng có thể đã thay đổi / loại bỏ / thả xuống khi bạn chạy chương trình lần sau. Ví dụ:một số người có thể đã làm rơi bảng, bản ghi proc hoặc chức năng được lưu trữ có thể đã thay đổi.

Đó là lý do tại sao nói chung PL / SQL được sử dụng để thao tác dữ liệu trong cấu trúc cơ sở dữ liệu, nhưng không phải để thao tác các cấu trúc đó.

nhưng có nhiều cách để thao tác bằng cách sử dụng gói SQL động và DBMS_SQL nhưng phương pháp luận của các luận án này lại nên được sử dụng một cách thận trọng. Ví dụ:nếu bạn đang tạo một Bảng, trước tiên bạn nên kiểm tra xem bảng này đã tồn tại hay chưa sử dụng dạng xem từ điển dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gặp lỗi ORA - 00907 ở phần sau khi BẬT CẬP NHẬT

  2. Di chuyển dữ liệu giữa các DBMS khác nhau

  3. Tích lũy thêm dữ liệu còn thiếu từ tháng trước hoặc năm trước

  4. GWFG trong Oracle RAC

  5. Tìm hiểu về Gói DBMS_OUTPUT trong Oracle