recuperar valor devuelto por procedimiento almacenado

30/06/2006 - 12:52 por Hugo Gsell | Informe spam
tengo un procedimiento almacenado de INSERT en sqlserver:
que me pasaron en el foro de sql server (ver abajo)
y lo ejecuto con este código (un poco minimizado pero basicamente) que
funciona... pero necesito que me devuelta "un valor"
(especificamente @error) del procedimiento almacenado... que debo agregar??
Dim cmd As SqlCommand = Nothing
If Not EstadoConexion Then
ConectarABaseDeDatos(CadenaConexion)'aca abre en sqlCnn
End If
cmd = New SqlCommand()
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@pIdPaso", SqlDbType.SmallInt)
cmd.Parameters.Add("@pDescripcion", SqlDbType.VarChar, 50)
cmd.Parameters("@pIdPaso").Value = datos.IdPaso
cmd.Parameters("@pDescripcion").Value = datos.Descripcion
cmd.Connection = sqlCnn
cmd.CommandText = "GrabaPasos"
cmd.CommandType = CommandType.StoredProcedure
sqlCnn.Open()
cmd.ExecuteNonQuery()
cmd.Dispose()


ALTER PROCEDURE GrabaPasos
@pIdPaso smallint,
@pDescripcion as varchar(50)
AS
SET nocount ON
DECLARE @error int
SET transaction isolation level SERIALIZABLE
BEGIN transaction
INSERT into Pasos
select isnull(max(IdPaso), 0) + 1, @pdescripcion
from Pasos
set @error = @@error
if @error != 0 begin rollback transaction return -1 end
commit transaction
return @@error
 

Leer las respuestas

#1 Alberto Poblacion
30/06/2006 - 14:20 | Informe spam
"Hugo Gsell" wrote in message
news:eou%
tengo un procedimiento almacenado de INSERT en sqlserver:
que me pasaron en el foro de sql server (ver abajo)
y lo ejecuto con este código (un poco minimizado pero basicamente) que
funciona... pero necesito que me devuelta "un valor"
(especificamente @error) del procedimiento almacenado... que debo
agregar??
[...]
return @@error



Puesto que el valor se devuelve con un "return", en el programa hay que
recogerlo con un parámetro del tipo "ReturnValue":

Dim cmd As SqlCommand = Nothing
If Not EstadoConexion Then
ConectarABaseDeDatos(CadenaConexion)'aca abre en sqlCnn
End If
cmd = New SqlCommand()
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@pIdPaso", SqlDbType.SmallInt)
cmd.Parameters.Add("@pDescripcion", SqlDbType.VarChar, 50)
cmd.Parameters("@pIdPaso").Value = datos.IdPaso
cmd.Parameters("@pDescripcion").Value = datos.Descripcion



cmd.Parameters.Add("@Return_value", SqlDbType.Int)
cmd.Parameters("@Return_value").Direction =
ParameterDirection.ReturnValue

cmd.Connection = sqlCnn
cmd.CommandText = "GrabaPasos"
cmd.CommandType = CommandType.StoredProcedure
sqlCnn.Open()
cmd.ExecuteNonQuery()



valorDevuelto = cmd.Parameters("@Return_value").Value

cmd.Dispose()

Preguntas similares