2011-05-17 13 views
11

Si un procedimiento almacenado devuelve un valor de cero, ¿significa eso que se ejecutó correctamente? Estoy usando MS SQL Server 2008.¿Es un valor de retorno de 0 siempre exitoso en los procedimientos almacenados?

+1

No estoy seguro de cuál es su pregunta. Si puede escribir el SP y elegir el valor de retorno, ¿no es la respuesta "no"? – dkretz

+0

La información relacionada en la declaración de devolución también podría ser de ayuda: http://stackoverflow.com/questions/2578536/msdn-about-stored-procedure-default-return-value – TheEmirOfGroofunkistan

+0

Para obtener más detalles sobre el procedimiento de devolución de la tienda, puede leer este artículo en MSDN https://msdn.microsoft.com/en-us/library/ms188655.aspx y https://msdn.microsoft.com/en-us/library/ms174998.aspx –

Respuesta

11

No, puede devolver algo por sí mismo

ejemplo

CREATE PROC pr_test AS 
SELECT 1/0 

RETURN 0 
GO 

Ahora ejecutarlo

DECLARE @i INT 
exec @i = pr_test 

SELECT @i -- will be 0 

DROP PROC pr_test 

Ahora vamos a hacerlo de nuevo sin la instrucción de retorno

CREATE PROC pr_test2 AS 
SELECT 1/0 

GO 

DECLARE @i INT 
exec @i = pr_test2 

SELECT @i -- will be - 6 

mejor utilizar un output parameter a pasar de nuevo a los estados y mensajes o

+1

¿Cómo es el valor de retorno 6? y el resultado dice - Msg 8134, nivel 16, estado 1, procedimiento pr_test2, línea 3 Se ha encontrado un error de división por cero. (1 fila (s) afectadas) – Mahesh

5

Puede utilizar la palabra Return devolver cualquier valor entero de un procedimiento almacenado . Eso significa que cero no significa que el procedimiento almacenado se ejecutó con éxito.

5

Un valor de retorno @@ ERROR de "cero" indica que su procedimiento se completó sin ningún error.

Por supuesto, eso no quiere decir que hizo lo que quería que ...

¿Puede ser más específico acerca de lo que estás viendo?

Cuestiones relacionadas