DeepEdit!

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

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

Области действия и области видимости переменных

Область действия (scope) переменной — это фрагмент программы, в кото­ром возможно обращение к данной переменной. Для переменной PL/SQL это фрагмент с момента ее объявления до конца блока. Когда
переменная выходит из своей области действия, PL/SQL освобождает память, используемую для хранения переменной, и ссылки на нее стано­вятся невозможны. На рис. 3.2 показано, что областью действия перемен­ной v_Characteг является только внутренний блок; после ключевого слова END внутреннего блока она становится недоступной. Область действия пе­ременной v_Nunber распространяется до ключевого слова END внешнего блока. Внутренний блок является областью действия обеих переменных.
Рис. 3.2. Область действия переменных

Область видимости (visibility) переменной — это фрагмент программы, в котором возможно обращение к этой переменной без использования ее квалифицированного имени. Область видимости всегда лежит в        области действия; если переменная находится вне области своего действия, она невидима. Рассмотрим рис. 3.3. В точке 1 переменные v_AvailableFlag и v_SSN находятся в границах своих областей действия и видимы. В точке 2 обе эти переменные находятся в пределах своих областей действия, но видима только переменная. При объявлении переменной
v_SSN типа CHAR(ll) объявление NUMBER(9) становится скрытым. В этой точке все четыре переменные находятся в границах своих областей действия, но видимы только три: v_AvailableFlag, v_StartDate и v_SSN CHAR(ll). В точке 3 переменные v_StartOate и v_SSN CHAR(ll) находятся вне пределов своих областей действия и поэтому больше не видимы. Здесь действуют и видимы те же переменные, что и в точке 1: v_AvailableFlag и v_SSN   NUMBER(9).

Как обратиться в программе к переменной, которая находится в своей области действия, но невидима? Рассмотрим рис. 3.4. Это тот же самый блок, который был приведен на рис. 3.3, но для внешнего блока создана метка <<l_0uter>> (см. ниже раздел "Управляющие структуры PL/SQL"). В точке 2 переменная v_SSN NUMBER(9) невидима. Однако обратиться к ней можно с помощью метки следующим образом:

 









jAntivirus