Problema en storeProcedure(Valor Retorno) Urgente Por Favor

29/09/2005 - 18:34 por Miko_tnt | Informe spam
Buenas a todos

Tengo el siguiente problema resulta que tengo un
procedimiento almacenado el cuel mira si un dato
esta en una tabla y deacuerdo a esto retorna
un 1 o un 0, es muy simple:


alter PROCEDURE sp_miProcedimiento
@Dato Char(10)
AS
if exists(select columna1 from miTabla where columna1 = @Dato)
return 1
else
return 0
go

ahora quiero ejecutar este procedimiento desde mi programa en vb.Net
y quiero recuperar el valor de retorno 1 o 0. Hago lo siguiente...

dim miValorRetorno as integer = 0
dim parametros() as sqlparameter
dim comando as sqlparameter
dim strcomando as string

redim parametros(1)


strcomando = "sp_miProcedimiento"
comando = New SqlCommand(strcomando , conexion)
comando.CommandType = CommandType.StoredProcedure
ReDim parametrosValida(2)

parametros(0) = comando.Parameters.Add("@Dato", SqlDbType.Char)
parametros(0).Value = "miDatoABuscar"
parametros(0).Direction = ParameterDirection.Input


comando.ExecuteNonQuery()

comoya dije el procedimiento va a devolver un 1 o 0, pero en mi programa
no c como recuperar ese valor de retorno, se que puedo hacer:

redim parametros(2) y agregar otro paremetro de tipo

parametros(1).Direction = ParameterDirection.ReturnValue

pero me muestra error, ¿como puedo obtener el valor de retorno y
asignarselo a la variable miValorRetorno ...?

Muchas Gracias por su tiempo ... es urgente , agradezco cualquier ayuda
 

Leer las respuestas

#1 Juan Pedro Gonzalez
30/09/2005 - 13:29 | Informe spam
Hola Miko,

Puedes recuperar los datos del procedimiento almacenado de dos maneras. La
mas habitual suele ser definir unas variables en el procedimiento almacenado
como output, que seria similar al ByRef de visual basic. De esta forma
definirias la nueva variable en los parametros y tras ejecutar el
procedimiento almacenado la leerias. En el procedimiento que has puesto no
tienes definidas variables como output, pero sin embargo haces un return,
asi que en ese caso puedes llamarlo con ExecuteReader en lugar del
ExecuteNonQuery, de esta forma el datareader contendra el dato devuelto en
la posicion 0.

Espero que esto te ayude,

Juan Pedro Gonzalez

Preguntas similares