lunes, 17 de diciembre de 2007

LLamar a un procedimiento almacenado que devuelve valor a través de RETURN

Como sabemos una de las maneras de que un procedimiento almacenado de SqlServer nos devuelva un valor (entero) es usando el RETURN:

CREATE PROCEDURE nombreProc
@Parametro nvarchar(50)
AS
BEGIN
  IF EXISTS (SELECT Id from Tabla where campo=@Parametro)
    begin
      RETURN 1
    end
    else begin
      RETURN 0
    end
END

Para llamar a este procedimiento desde el .net y obtener el valor devuelto hay que crearle un parámetro específico del tipo ReturnValue, aparte de los definidos en el procedimiento:

cmd.CommandType = Data.CommandType.StoredProcedure
cmd.CommandText = "nombreProc"
cmd.Parameters.Clear()
cmd.Parameters.Add(New SqlParameter("@Parametro", "valor"))
Dim retValue As New SqlParameter("@RETURN_VALUE", Data.SqlDbType.Int)
retValue.Direction = Data.ParameterDirection.ReturnValue
cmd.Parameters.Add(retValue)
cmd.ExecuteScalar()
Dim resultado As Integer = Convert.ToInt32(retValue.Value)
If resultado = 1 Then
  ...
  ...
Else
  ...
  ...
End If

No hay comentarios: