Cuando estamos dentro de un stored procedure o de un trigger o de un execute block. ¿Cómo podemos saber si la operación que realizamos (INSERT, UPDATE, DELETE, SELECT, FETCH) se realizó exitosamente o no?

Una forma muy sencilla es a través de la variable de contexto del Firebird ROW_COUNT, la cual guarda la cantidad de filas afectadas por la última de esas operaciones.

Ejemplo1:

UPDATE
   PRODUCTOS
SET
   PRD_PREVTA = PRD_PREVTA * 1.05
WHERE
   PRD_PREVTA < 1000

IF (ROW_COUNT = 0) THEN BEGIN
/* Aquí los comandos cuando no hubo actualización */
END

El UPDATE superior aumentará el precio de venta de los productos en un 5% para aquellos productos cuyo precio de venta sea menor que 1000.

Si ningún producto tenía un precio menor que 1000 entonces ningún precio de venta será actualizado y se entrará en el ciclo IF … BEGIN … END

Artículo relacionado:

El índice del blog Firebird21

Anuncios