Sentencia BEGIN ... END

La sentencia BEGIN ... END da a las sentencias definidas entre las palabras clave BEGIN y END el estado de una única sentencia.

Esto permite que las sentencias formen parte del cuerpo de una función o procedimiento.

Sintaxis

La segunda Etiqueta sólo puede estar presente si la primera Etiqueta está presente y las etiquetas deben ser idénticas. Dos o más sentencias etiquetadas en el mismo nivel pueden tener la misma Etiqueta, pero esto niega parcialmente la ventaja de la segunda Etiqueta. La ventaja es que en las etiquetas coinciden, de manera precisa y no ambigua, cada END con su BEGIN. Sin embargo, una sentencia etiquetada dentro de sentencias no puede tener la misma Etiqueta, porque esto hace que el comportamiento de las sentencias ITERATE y LEAVE sea ambiguo.

Puede considerar la sentencia BEGIN ... END como una construcción de bucle, que siempre realiza un bucle sólo una vez. El efecto de una sentencia ITERATE o LEAVE dentro de una sentencia BEGIN ... END es el mismo; el control se transfiere a la sentencia que sigue a END. Utilizar ITERATE o LEAVE dentro de una sentencia BEGIN ... END es útil en los casos en que hay una larga serie de cálculos que es necesario abandonar, porque se ha alcanzado un resultado definido o porque se ha producido un error.

Inmediatamente se abre un nuevo ámbito de variable local después del BEGIN de apertura y, por consiguiente, las variables declaradas dentro de esta sentencia quedan fuera del ámbito cuando se alcanza el END que interrumpe el proceso. Si una variable local tiene el mismo nombre que una variable existente, las referencias a ese nombre que se produzcan después de la declaración accederán a la variable local. Por ejemplo:
DECLARE Variable1 CHAR 'Existing variable';

-- Una referencia a Variable1 aquí devuelve 'Existing variable'

BEGIN
  -- Una referencia a Variable1 aquí devuelve 'Existing variable'

  DECLARE Variable1 CHAR 'Local variable';  -- Perfectamente válido
aunque el nombre sea el mismo 
  -- Una referencia a Variable1 aquí devuelve 'Local variable'
END;

Conceptos relacionados
ESQL

Tareas relacionadas
Desarrollo de ESQL

Referencia relacionada
Preferencia de sintaxis
Sentencias ESQL