Oracle
 sql >> база данни >  >> RDS >> Oracle

Има ли начин за достъп до частни plsql процедури за тестови цели?

Има начин да направите това, при условие че сте на 10g или повече. Нарича се условна компилация. Това е много удобна функция, която предоставя специален синтаксис, така че да можем да променим нашия PL/SQL код по време на компилация.

Както се случи, използвах тази функция точно за излагане на частни пакети в спецификация, така че да мога да стартирам UTPLSQL тестове срещу тях.

Ето специалния синтаксис:

create or replace package my_pkg
as

    $IF $$dev_env_test $THEN

    PROCEDURE private_proc;

    $END

    FUNCTION public_function return date;

end my_pkg;
/

Тази променлива със знака за двоен долар е флаг за условна компилация.

Ако опиша пакета, можем да видим само публичния пакет:

SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

Сега задавам условния флаг и прекомпилирам пакета и сякаш с магия ...

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>

Приватизирането на функциите е толкова просто, колкото си мислите, че ще бъде:

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>

Можем да направим много повече с условна компилация. Това е описано в документите. Научете повече.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не е валиден месец за извлечение INSERT

  2. Наложете ограничение за външен ключ към колони от същата таблица

  3. Как можете да разберете кой файл tnsnames.ora се използва от .net повикване?

  4. Oracle/SQL - Намиране на записи с една стойност, с изключение на нули

  5. 5 начина за актуализиране на данни с подзаявка в Oracle SQL