Область действия (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).
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) невидима. Однако обратиться к ней можно с помощью метки следующим образом:
< Предыдущая | Следующая > |
---|