|
Bloques de instrucciones
PL/SQL
A continuación se muestra como es la estructura
general de los bloques de instrucciones de PL/SQL
que se usarán mas adelante en la creación
de procedimientos, funciones y triggers.
PL/SQL (Procedural Language/SQL) es una extensión
de SQL, que agrega ciertas construcciones propias
de lenguajes procedimentales, obteniendose como
resultado un lenguaje estructural mas poderoso
que SQL. La unidad de programación utilizada
por PL/SQL es el bloque. Todos los programas de
PL/SQL están conformados por bloques. Tipicamente,
cada bloque lleva a cabo una acción lógica
en el programa. Un bloque tendrá siempre
la siguiente estructura:
DECLARE
//Sección declarativa: variables, tipos,
y subprogramas
//de uso local
BEGIN
//Sección ejecutable: las instrucciones
procedimentales, y de SQL
//aparecen aquí. Es la unica sección
obligatoria en el bloque.
EXCEPTION
//Sección de manejo de excepciones. Las
rutinas de manejo de errores
//aparecen aqui
END;
Solo se requiere que aparezca la sección
ejecutable. Lo demas es opcional. Las unicas instrucciones
SQL permitidas en un bloque PL/SQL son INSERT,
UPDATE, DELETE y SELECT, ademas de algunas instrucciones
para manipulación de datos, e instrucciones
para control de transacciones. Otras instrucciones
de SQL como DROP, CREATE o ALTER no son permitidas.
Se permite el uso de comentarios estilo C (/*
. . .*/). PL/SQL no es case sensitive por lo que
no hay distinción entre nombres con mayusculas
y minusculas.
En la sección de declaraciones, se indican
las variables que serán usadas dentro del
bloque y sus tipos. Por ejemplo:
DECLARE
myBeer VARCHAR(20);
price NUMBER(6,2);
En algunos casos, es posible que se desee que
el tipo de una variable coincida con el tipo usado
para una columna de una tabla determinada, en
esos casos se puede usar la construcción:
DECLARE
myBeer Beers.name%TYPE;
Con lo cual se logra que la variable myBeer tenga
el mismo tipo que la columna name de la tabla
Beers.
Tambien es posible inicializar las variables,
mediante el operador :=. Ademas, mediante el uso
del mismo operador es posible hacer asignaciones
en el cuerpo del programa. Por ejemplo:
DECLARE
price NUMBER := 300;
BEGIN
price := price + 150;
END;
.
run
La ejecución de este bloque no tendrá
ningun efecto, ya que no se están haciendo
cambios sobre la base de datos.
Ademas es posible usar sentencias condicionales
y ciclos dentro de los bloques de PL/SQL. Una
sentencia condicional tipica es de la forma:
IF (condicion)
THEN (lista de acciones)
ELSE (lista de acciones)
END IF;
Si se desea, se puede hacer el uso de varios
casos de condición, mediante el uso de:
IF . . . THEN . . .
ELSIF . . . THEN . . .
ELSIF . . . THEN . . .
.
.
.
ELSE . . .
END IF;
En ambos casos, la clausula ELSE es opcional.
Si se desea crear un lazo, se puede usar la instrucción:
LOOP
lista_de_instrucciones
END LOOP;
Al menos alguna de las instrucciones debe ser:
EXIT WHEN condicion;
De esta manera, el lazo terminará cuando
la condición sea verdadera. Además
es posible utilizar la instrucción:
WHILE (condicion) LOOP
lista_de_instrucciones
END LOOP;
De esta forma, el ciclo solo se inicia si la
condicion es verdadera en principio. Es posible
que el programa nunca entre en el ciclo. Usando
la instrucción LOOP se garantizaba que
siempre se ejecutaría el cuerpo del ciclo
al menos una vez. Por último, es posible
usar ciclos que se ejecuten un numero predeterminado
de veces, mediante el uso de la instrucción:
FOR i IN a..b LOOP
lista_de_instrucciones
END LOOP;
En este caso i es una variable de uso local,
por lo que no es necesario que sea declarada,
y puede ser usada dentro del lazo, mientras que
a y b son constantes.
ir a siguiente capitulo
|