Siempre uso el valor de retorno para devolver el estado de error. Si necesita devolver un valor, usaría un parámetro de salida.
ejemplo de procedimiento almacenado, con un parámetro de SALIDA:
CREATE PROCEDURE YourStoredProcedure
(
@Param1 int
,@Param2 varchar(5)
,@Param3 datetime OUTPUT
)
AS
IF ISNULL(@Param1,0)>5
BEGIN
SET @Param3=GETDATE()
END
ELSE
BEGIN
SET @Param3='1/1/2010'
END
RETURN 0
GO
llamada al procedimiento almacenado, con un parámetro de SALIDA:
DECLARE @OutputParameter datetime
,@ReturnValue int
EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT
PRINT @ReturnValue
PRINT CONVERT(char(23),@OutputParameter ,121)
SALIDA:
0
2010-01-01 00:00:00.000