Retornar un boolean desde un stored procedure de MS SQL Server

El problema
Supongamos que queremos actualizar un registro en la BD mediante el uso de un stored procedure y necesitamos saber si o no se realizó el update.. y claro, para esto el servidor de BD debe de responder con 0 de false o 1 de true..

La solución
Esto se logra utilizando el método rowcount que retorna el número de filas afectadas y se puede utilizar a partir de versiones de MS SQL Server 2005 en delante.

Yo escribí un stored procedure bastante sencillo el cual recibe 2 parámetros.. @Id que será el registro que buscaré para actualizar y @valor que será el nuevo valor que asignaré a un determinado campo de la tabla.. entonces vamos al código.

USE [Schema].[DATABASE]
GO
CREATE PROCEDURE [Schema].[spElStoredDePrueba]
    @Id AS INT,
    @valor AS INT
AS
BEGIN
    DECLARE @resultado BIT
    UPDATE tabla SET campo = @valor WHERE id = @Id
    IF @@rowcount = 0
	BEGIN
            SET @resultado = 0
	END
    ELSE
	BEGIN
            SET @resultado = 1
	END
    RETURN (@resultado)
END
GO

Lo que hice fue crear una variable llamada @resultado y su valor depende de sí o no se hizo la actualización (utilizando rowcount).. al final lo único que hago es hacer return de @resultado y listo, ahora el servidor responderá un valor booleano.

Sé que es muy difícil que un update retorne un error y no se ejecute, pero en sistemas de alta disponibilidad hay que evitar cualquier tipo de errores y aunque se tengan validaciones previas, nunca estará de más asegurarse.

Happy Coding!

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Twitter LinkedIn Flickr YouTube 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *