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

Раздел за инициализация на пакета

Разделът за инициализация на пакет, както подсказва името, се изпълнява, когато пакетът се инициализира. Това се случва, когато първата процедура/функция от пакета се изпълни след установяване на сесия или след (пре)компилиране на пакета. Целта е да се инициализира глобалното състояние на пакета, което може да се използва по време на живота на сесията. Всички глобални променливи на пакета се запазват и имате достъп до тях по-късно.

Пример:

[email protected]_pdb_tcp> CREATE OR REPLACE PACKAGE test_package
  2  IS
  3     PROCEDURE foo;
  4  END;
  5  /

Package created.

[email protected]_pdb_tcp> CREATE OR REPLACE PACKAGE BODY test_package
  2  IS
  3     PROCEDURE foo
  4     IS
  5     BEGIN
  6             DBMS_OUTPUT.PUT_LINE('Procedure executed. ');
  7     END;
  8
  9  BEGIN
 10     DBMS_OUTPUT.PUT_LINE('Package initialized. ');
 11  END;
 12  /

Package body created.

[email protected]_pdb_tcp> EXEC test_package.foo
Package initialized.
Procedure executed.

PL/SQL procedure successfully completed.

[email protected]_pdb_tcp> EXEC test_package.foo
Procedure executed.

PL/SQL procedure successfully completed.

[email protected]_pdb_tcp>

Виждате, че след като пакетът е компилиран, секцията за инициализация се изпълнява, когато процедурата foo се изпълнява. Сега пакетът е инициализиран. Всяко последващо изпълнение на foo изпълнява само процедурата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е причината за грешка ORA-38104 при сливане на SQL?

  2. Каква е разликата между ANSI и не-ANSI съединения и кое препоръчвате?

  3. Spring Data JPA, извикваща Oracle функция

  4. Oracle INSTR назад в Oracle SQL

  5. Връщане на 1 или 0 в конкретна SQL заявка