sql >> Databasteknik >  >> RDS >> Oracle

Initialiseringsavsnitt av paketet

Paketinitieringssektionen som namnet antyder exekveras när paketet initieras. Detta händer när den första proceduren/funktionen från paketet exekveras efter att sessionen har upprättats eller efter att paketet har (åter)kompilerats. Syftet är att initiera det globala tillståndet för paketet som kan användas under sessionens livstid. Alla globala paketvariabler behålls och du kan komma åt dem senare.

Exempel:

example@sqldat.com_pdb_tcp> CREATE OR REPLACE PACKAGE test_package
  2  IS
  3     PROCEDURE foo;
  4  END;
  5  /

Package created.

example@sqldat.com_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.

example@sqldat.com_pdb_tcp> EXEC test_package.foo
Package initialized.
Procedure executed.

PL/SQL procedure successfully completed.

example@sqldat.com_pdb_tcp> EXEC test_package.foo
Procedure executed.

PL/SQL procedure successfully completed.

example@sqldat.com_pdb_tcp>

Du ser att efter att paketet har kompilerats exekveras initialiseringssektionen när proceduren foo avrättas. Paketet är initierat nu. Varje efterföljande körning av foo exekverar endast proceduren.




  1. Ställ in teckenuppsättningen och sorteringen av en databas i MariaDB

  2. Ruby - Undantag inträffade:[Mysql2::Error] stängde MySQL-anslutningen

  3. ningx, uwsgi, python permanent mysql-fel efter en tid från start av programmet

  4. räkna null-poster i databaskolumnen på ett RESTfull sätt