jueves, 8 de diciembre de 2016

NESTED BLOCKS O BLOQUES ANIDADOS


Los bloques PL/SQL se pueden anidar.


  • Una sección ejecutable (BEGIN ... END) pueden contener bloques anidados.
  • Una sección de excepción puede contener? Bloques anidados.
Siendo procesal concede PL / SQL la capacidad de los estados de nidos. Puede bloques nido donde se permite que una sentencia ejecutable, con lo que el bloque anidado un comunicado. Si su sección ejecutable tiene código para muchas funcionalidades relacionados lógicamente para soportar múltiples requerimientos del negocio, se puede dividir la sección ejecutable en bloques más pequeños. La sección de excepción también puede contener bloques anidados.


El ejemplo mostrado tiene un (padre) bloque exterior y un bloque (niño) anidado. La variable v_outer_variable se declara en el bloque exterior y la variable v_inner_variable se declara en el bloque interno.

v_outer_variable es local en el bloque exterior sino global al bloque interior. Al acceder a esta variable en el bloque interior, PL / SQL primero busca una variable local en el interior de manzana con ese nombre. No hay ninguna variable con el mismo nombre en el bloque interior, por lo PL / SQL busca la variable en el bloque exterior. Por lo tanto, v_outer_variable se considera que es la variable global para todos los bloques de cerramiento. Puede acceder a esta variable en el bloque interior como se muestra en la diapositiva. Las variables declaradas en un bloque PL / SQL se consideran como locales en ese bloque y global a todos sus sub-bloques.

v_inner_variable es local en el bloque interno y no es global, porque el bloque interno no tiene ningún bloques anidados. Esta variable se puede acceder sólo dentro del bloque interior. Si PL / SQL no encuentra la variable declarada a nivel local, que mira hacia arriba en la parte declarativa de los bloques de los padres. PL / SQL no se parece a la baja en los bloques del niño.


La salida del bloque de muestra en el portaobjetos es el siguiente:
  • anonymous block completed
  • Father's Name: Patrick
  • Date of Birth: 12-DEC-02
  • Child's Name: Mike
  • Date of Birth: 20-APR-72

Examine la fecha de nacimiento que se imprime para el padre y el niño. La salida no proporciona la información correcta, porque el alcance y la visibilidad de las variables no se aplican correctamente.
  • El ámbito de una variable es la parte del programa en el que se declara la variable y es accesible.
  • La visibilidad de una variable es la parte del programa donde se puede acceder a la variable sin utilizar un calificador.
Scope
  • La variable v_father_name y la primera aparición de la variable v_date_of_birth se declaran en el bloque exterior. Estas variables tienen el alcance de la frase en la que se declaran. Por lo tanto, el alcance de estas variables se limita a la bloque exterior.
  • Las variables v_child_name y v_date_of_birth se declaran en el interior de manzana o el bloque anidado. Estas variables son accesibles sólo dentro del bloque anidado y no son accesibles en el bloque exterior. Cuando una variable está fuera de alcance, PL / SQL libera la memoria utilizada para almacenar la variable; por lo tanto, no pueden ser referenciados estas variables.\

Visibilidad

La variable v_date_of_birth declarado en el bloque exterior tiene un alcance incluso en el interior de manzana. Sin embargo, esta variable no es visible en el bloque interno porque el bloque interior tiene una variable local con el mismo nombre.

1. Examine el código en la sección ejecutable del bloque PL / SQL. Puede imprimir el nombre del padre, el nombre del niño y la fecha de nacimiento. Sólo la fecha de nacimiento del niño se  puede imprimir aquí porque la fecha de nacimiento del padre no es visible.
2.Fecha del padre de nacimiento es visible en el bloque exterior y, por lo tanto, se pueden imprimir.

Nota: No se puede tener variables con el mismo nombre en un bloque. Sin embargo, como se muestra en este ejemplo, se puede declarar variables con el mismo nombre en dos bloques diferentes (bloques anidados). Los dos elementos representados por identificadores son distintos; cambios en uno no afectan a la otra.

Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?