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

Có cách nào để truy cập các thủ tục plsql riêng tư cho mục đích thử nghiệm không?

Có một cách để làm điều này, miễn là bạn đang ở trên 10g hoặc cao hơn. Nó được gọi là Biên dịch có điều kiện. Đây là một tính năng rất gọn gàng, cung cấp cú pháp đặc biệt để chúng tôi có thể thay đổi mã PL / SQL của mình tại thời điểm biên dịch.

Khi nó xảy ra, tôi đã sử dụng tính năng này một cách chính xác để hiển thị các gói riêng tư trong một thông số kỹ thuật để tôi có thể chạy các bài kiểm tra UTPLSQL chống lại chúng.

Đây là cú pháp đặc biệt:

create or replace package my_pkg
as

    $IF $$dev_env_test $THEN

    PROCEDURE private_proc;

    $END

    FUNCTION public_function return date;

end my_pkg;
/

Biến có ký hiệu hai đô la đó là cờ Tổng hợp có điều kiện.

Nếu tôi mô tả gói, chúng ta chỉ có thể thấy gói công khai:

SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

Bây giờ tôi đặt cờ điều kiện và biên dịch lại gói, và như thể bằng phép thuật ...

SQL> alter session set plsql_ccflags='dev_env_test:true'
  2  /

Session altered.

SQL> alter package my_pkg compile
  2  /

Package altered.

SQL> desc my_pkg
PROCEDURE PRIVATE_PROC
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

Việc tư nhân hóa các chức năng đơn giản như bạn nghĩ:

SQL> alter session set plsql_ccflags='dev_env_test:false'
  2  /

Session altered.

SQL> alter package my_pkg compile
  2  /

Package altered.

SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

Chúng tôi có thể làm nhiều hơn nữa với biên dịch có điều kiện. Nó được bao gồm trong các tài liệu. Tìm hiểu thêm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tài liệu MAA cho Đám mây Oracle

  2. Làm cách nào để bỏ qua dấu và trong tập lệnh SQL chạy từ SQL Plus?

  3. ORA-00918:Cột được xác định một cách mơ hồ

  4. Hàm RTRIM () trong Oracle

  5. Oracle - Không thể sử dụng dấu * với cột khác trong mệnh đề chọn