Sentencia FOR
La instrucción FOR ejecuta una instrucción para cada fila de una tabla. Se genera una sentencia compuesta implícita para implementar la sentencia FOR.
Sintaxis
Descripción
- etiqueta
Especifica la etiqueta de la sentencia FOR. Si se especifica una etiqueta final, ésta deberá ser igual que la etiqueta inicial. El nombre de la etiqueta no puede ser el mismo que el nombre de la rutina, el nombre del activador avanzado u otra etiqueta dentro del mismo ámbito. Para más información, véase Referencias a etiquetas SQL en SQL PL.
- nombre del bucle for
- Especifica la etiqueta para la sentencia compuesta implícita que se genera para implementar la sentencia FOR. for-loop-name sigue las reglas de la etiqueta de una sentencia compuesta, excepto que no se puede utilizar con una sentencia ITERATE, GOTO o LEAVE dentro de la sentencia FOR. for-loop-name no debe ser igual a ninguna etiqueta dentro del mismo ámbito.
for-loop-name puede utilizarse para calificar variables SQL generadas que se correspondan con las columnas devueltas por select-statement.
- nombre-cursor
- Nombra un cursor que se genera para seleccionar filas de la tabla de resultados de la sentencia select. Si no se especifica el nombre del cursor, se genera un nombre de cursor único.
el nombre del cursor no puede referenciarse fuera de la sentencia FOR y no puede especificarse en una sentencia OPEN, FETCH o CLOSE.
- WITH HOLD o SIN RETENCIÓN
- Especifica si se debe evitar que el cursor se cierre como consecuencia de una operación de confirmación.
- SIN ESPERA
- Especifica que no se impide que el cursor se cierre como consecuencia de una operación de confirmación. SIN RETENCIÓN es la opción predeterminada.
- WITH HOLD
- Especifica que el cursor no debe cerrarse como consecuencia de una operación de confirmación. Un cursor que se declara utilizando la cláusula WITH HOLD se cierra implícitamente en el momento de la confirmación solo si la conexión asociada al cursor finaliza durante la operación de confirmación. Para obtener más información, consulte la instrucción DECLARE CURSOR.
- sentencia-select
- Especifica la sentencia SELECT del cursor. Cada expresión de la lista SELECT debe tener un nombre. Si una expresión no es un nombre de columna simple, se debe utilizar la cláusula AS para nombrar la expresión. Si se especifica la cláusula AS, ese nombre se utiliza para la variable y debe ser único.
select-declaración no debe incluir una cláusula values.
La lista SELECT no debe incluir un valor de matriz sin tipificar.
- sentencia-procedimiento-SQL
- Especifica las sentencias SQL que se ejecutarán para cada fila de la tabla. Las sentencias SQL no deben incluir una sentencia OPEN, FETCH o CLOSE que especifique el nombre del cursor de la sentencia FOR.
Notas
Reglas de la sentencia FOR : La sentencia FOR ejecuta una o varias sentencias para cada fila de la tabla de resultados del cursor. El cursor se define especificando una lista SELECT que describe las columnas y filas seleccionadas. Las sentencias dentro de la sentencia FOR se ejecutan para cada fila seleccionada.
La lista SELECT debe constar de nombres de columna únicos, y los objetos a los que se hace referencia en la instrucción select deben existir en el servidor actual cuando se cree la rutina o el desencadenador. Si la instrucción FOR está contenida en una rutina o desencadenador que se define con el atributo WITH EXPLAIN, la PLAN_TABLE debe existir cuando se cree la rutina o desencadenador.
El cursor especificado en una instrucción FOR no puede referenciarse fuera de la instrucción FOR y no puede especificarse en una instrucción OPEN, FETCH o CLOSE.
Advertencia sobre el controlador : Los controladores pueden utilizarse para gestionar errores que puedan producirse al abrir el cursor o al recuperar una fila utilizando el cursor en la instrucción FOR. Los controladores definidos para manejar estas condiciones de apertura o recuperación no deben ser controladores CONTINUE, ya que podrían hacer que la instrucción FOR se repita indefinidamente.
ejemplos
En el siguiente ejemplo, la instrucción FOR se utiliza para especificar un cursor que selecciona tres columnas de la tabla de empleados. Para cada fila seleccionada, la variable SQL fullname se establece en el apellido seguido de una coma, el nombre, un espacio en blanco y la inicial del segundo nombre. Cada valor de nombrecompleto se inserta en la tabla TNAMES.
BEGIN
DECLARE fullname CHAR(40);
FOR v1 AS
c1 CURSOR FOR
SELECT firstname, midinit, lastname FROM employee
DO
SET fullname =
lastname CONCAT ', '
CONCAT firstname
CONCAT ' '
CONCAT midinit;
INSERT INTO TNAMES VALUES ( fullname );
END FOR;
END; 