DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Инициализация модуля

При первом вызове подпрограммы модуля или любом обращении к пере­менной или типу модуля создается его экземпляр (instantiated). Это значит, что модуль считывается с диска в память, а затем запускается скомпили­рованный код вызванной подпрограммы. В этот момент для всех пере­менных, описанных в модуле, выделяется память. У каждого сеанса будет собственная копия модульных переменных; это гарантирует, что два сеан­са, выполняющие подпрограммы одного и того же модуля, будут использо­вать различные области памяти.
Во многих случаях при создании экземпляра модуля требуется запус­кать код инициализации. Для этого к телу модуля нужно добавить раздел инициализации, разместив его после всех объектов:
CREATE OR REPLACE PACKAGE BODY имя_модуля[1?> | AS}
BEGIN
код_инициализации; END |имя_модуля];
где имя_модуля — это имя модуля, а код_инии,иалшац.ии — запускаемый код. Ниже приведен пример модуля, реализующего функцию генерации слу­чайных чисел.



Для получения случайного числа можно просто вызвать Random. Rand. Последовательность случайных чисел зависит от исходного значения: для одного и того же исходного значения генерируются одинаковые по­следовательности. Поэтому, чтобы получить иные значения, необходимо переустанавливать исходное значение всякий раз при создании экземпля­ра модуля. Для этого в разделе инициализации модуля вызывается проце­дура ChangeSeed.
Внимание
■   В Oracle8 имеется встроенный модуль DBMS_RANDOM, который также применяется для получения случайных чисел (см. приложение А).

 









jAntivirus