Como obtengo mediante Ado.Net un valor que regresa mi store proced

09/10/2006 - 20:59 por Antonio | Informe spam
Hola:
Estoy iniciando mi cambio de VB 6 a VB Net. pero tengo un problema en VB 6
tenia una linea de codigo similar a esta:

tengo un Store Procedure en sql que me devuelve un valor y en vb 6 yo lo
recibia en una variable.

mivariable = miado.execute(cadena de ejecucion)
en ADO.net como hago para que me devuelva ese valor como debo de correrlo o
con que instruccion ya que el ExecuteNonQuery me devuelve el numero de
registros afectados. pero no el valor que tiene mi store procedure

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion [MVP]
09/10/2006 - 21:34 | Informe spam
"Antonio" wrote in message
news:
Mostrar la cita
Depende de cómo retorne el valor el procedimiento almacenado. Si lo
devuelve con un "Select valor from...", entonces se recoge con un
ExecuteScalar(). Si se devuelve con un "Return valor", entonces se recoge
como si fuera un parámetro de salida del procedimiento, solo que en el Tipo
del parámetro, en lugar de ponerle "Output" lo pones "ReturnValue".
#2 Antonio
09/10/2006 - 23:23 | Informe spam
Hola Alberto:
Te explico como tengo mis lineas:
en VB. Net tengo una linea similar:

lstrcadsql = "Exec spinsert valor1, valor2, valor3 output"

dim sqlcommand

Variableretorno = CType(lsqlCommand.ExecuteScalar(), Integer)

en SQL
el Store es

create procedure @valor1 int, @valor2 int, @valor3 output

insert into tablas (valor1, valor2) values (@valor1, @valor2)
select @valor3 = 1
...

return @valor3

me sigue mandando error cuando ejecuta estas lineas me dice que no se acepta
el output en executeScalar


"Antonio" wrote:

Mostrar la cita
#3 Alberto Poblacion [MVP]
10/10/2006 - 07:45 | Informe spam
"Antonio" wrote in message
news:
Mostrar la cita
Observa que estás devolviendo el valor del procedimiento con un "return"
y no un "select", y ya te dije que en este caso NO se puede usar el
ExecuteScalar, sino que tiene que ser un parámetro del SqlCommand. En el
Procedimiento, el valor de retorno no se debe declarar como parámetro
output; ya lo devuelve el Return por su cuenta.


Te lo corrijo:

create procedure @valor1 int, @valor2 int
as
insert into tablas (valor1, valor2) values (@valor1, @valor2)
declare @resultado int
select @resultado = 1
...
return @resultado
go


Dim cmd as New SqlCommand("spinsert", conexion)
cmd.CommandType=CommandType.StoredProcedure
cmd.Parameters.Add("@valor1", valor1)
cmd.Parameters.Add("@valor2", valor2)
SqlParameter retorno = New SqlParameter("RETURN_VALUE", SqlDbType.Int)
retorno.ParameterType=ParameterType.ReturnValue
cmd.Parameters,Add(retorno)
cmd.ExecuteNonQuery()
Variableretorno = CType(retorno.Value, Integer)
#4 Antonio
10/10/2006 - 14:27 | Informe spam
Muchisimas gracias por tu ayuda... una discupa por tanta pregunta

"Alberto Poblacion [MVP]" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida