Foros del Web » Programando para Internet » ASPX (.net) »

Recuperar el return de un stote procedure desde asp.net

Estas en el tema de Recuperar el return de un stote procedure desde asp.net en el foro de ASPX (.net) en Foros del Web. Hola de nuez!! Tengo una pequeña duda, en una pagina aspx estoy llamando a un SP para cargar datos a una bd ok, para eso ...
  #1 (permalink)  
Antiguo 23/11/2005, 11:53
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 18 años, 6 meses
Puntos: 0
Recuperar el return de un stote procedure desde asp.net

Hola de nuez!!

Tengo una pequeña duda, en una pagina aspx estoy llamando a un SP para cargar datos a una bd ok, para eso le mando los parametros al SP y me los carga, pero necesito conocer el id con el cual se almacena el texto, este id es autoincremental, y en el SP le paso el parametro 0, con esto le indico que me busque el ultimo id y despues de ese me almacene lo que acabo de subir, entonces pongo un return que le digo que despues de ejecutar el SP me arroje el valor del id(en este caso es el valor del id que se le asigne automaticamente), corro el SP en el analizador de consultas y me arroja el id que le asigne el campo id(ya que es autoincremental), entonces lo que quiero es sacar ese valor return en un label de mi page aspx, para asi saber que id tiene el elemento que meti.
Espero y me haya explicado, espero sus respuestas--

De antemano gracias--
Reciban salu2
  #2 (permalink)  
Antiguo 23/11/2005, 13:01
Avatar de mabarcau  
Fecha de Ingreso: mayo-2005
Mensajes: 317
Antigüedad: 19 años
Puntos: 0
No recuerdo donde lo vi por primera vez de lo contrario te pasaria el link, de todos modos te doy un ejemplo completo:

En tu SP el parametro de salida debes de clararlo asi:

@SALIDA INT OUTPUT

Mas adelante como ya tu dices haces el:

return @SALIDA


En tu capa de datos, podrias colocar una clase algo asi:


public int validarCarga(int numBloq, string nomVeta, string nomZona, int minId)
{
int salida = 0;
SqlCommand cmd = new SqlCommand();
SqlConnection cn = new SqlConnection();

cmd.CommandText = "SPM_VALIDA_BLOQUE";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = cn;
cn.ConnectionString = cadenaConn;
cmd.Parameters.Add(new SqlParameter("@CAR_BLOQUE",System.Data.SqlDbType.I nt)).Value = numBloq;
cmd.Parameters.Add(new SqlParameter("@CAR_VETA",System.Data.SqlDbType.Var Char)).Value = nomVeta;
cmd.Parameters.Add(new SqlParameter("@CAR_ZONA",SqlDbType.VarChar)).Value = nomZona;
cmd.Parameters.Add(new SqlParameter("@MIN_ID",SqlDbType.Int)).Value = minId;

SqlParameter paramSalida = new SqlParameter();
paramSalida.ParameterName = "@SALIDA";
paramSalida.SqlDbType = SqlDbType.Int;
paramSalida.Direction = ParameterDirection.Output;
cmd.Parameters.Add(paramSalida);

cn.Open();
cmd.ExecuteNonQuery();
salida = Int32.Parse(cmd.Parameters["@SALIDA"].Value.ToString());
cn.Close();
return salida ;
}

Tu Clase de Negocios podria ser de esta forma:

public int validarCarga(int numBloq, string nomVeta, string nomZona, int minId)
{
ValidaCargaADO validaCargaADO = new ValidaCargaADO();
return validaCargaADO.validarCarga(numBloq, nomVeta, nomZona,minId);
}

Al final cuando hagas la llamada en el codebehind, lo harias de esta forma:

int validacionCarga = validaCargaBUS.validarCarga(int.Parse(numBloque),v eta,zona,minId);

donde el valor de tu parametro @SALIDA seria: validacionCarga.


Te hubiese querido poner algo mas puntual, pero como el codigo lo tuve a la mano, me dio flojera reducirlo, de todas formas espero que te sirva!!
  #3 (permalink)  
Antiguo 23/11/2005, 13:43
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Aquí tienes un ejemplo:
http://msdn.microsoft.com/library/sp...ithcommand.asp

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 23/11/2005, 16:54
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 18 años, 6 meses
Puntos: 0
Holas!

Estuve checando el codigo que me pasaron y la pagina y no logre entender como implementarlo, miren mi SP es el siguiente:

CREATE PROCEDURE dbo.SPIVB_tab_texto (@id_texto int ,@nombre_titulo varchar(700),@nombre_tema varchar(500),@texto text)
AS

Begin

if @id_texto=0
begin
insert into tab_texto (nombre_titulo,nombre_tema,texto) values (@nombre_titulo,@nombre_tema,@texto)
select @@identity

end

return @id_texto

End
GO

Entonces quiero que me retorne el id_texto, ya que al principio le digo que tome el valor de cero, esto es para indicarle que se vaya hasta el final de la tabla y me lo inserte, y como el campo id_texto es autoincremental pues le asigna automaticamente un numero al campo id_texto, cuando corro el sp en el analizador de consultas del sql le pongo los siguientes parametros:

SPIVB_tab_texto 0,'algo','algo','algo' y lo corro

me devuelve el valor del id_texto asignado, por ejemplo 3220, pues ese id_texto es el que necesito que me devuelva en un label, pero no se como decirle en el vb.net que me regrese ese valor....



y el boton que hace la carga contiene lo siguiente::

Dim StrConnectionString As String
Dim Cnn As SqlConnection
Dim r, a As Integer
a = 0
StrConnectionString = "server=.;database=Grupos;uid=sa;pwd=;"
Cnn = New SqlConnection(StrConnectionString)
Dim com As New SqlCommand("SPIVB_tab_texto", Cnn)
com.CommandType = CommandType.StoredProcedure
com.Parameters.Add("@id_texto", 0)
com.Parameters.Add("@nombre_titulo", TextBox1.Text)
com.Parameters.Add("@nombre_tema", TextBox2.Text)
com.Parameters.Add("@texto", TextBox3.Text)

Cnn.Open()
com.ExecuteNonQuery()
Cnn.Close()

Entonces quiero que me expliquen como implemento el parametro id_texto para que me returne el valor de ese parametro....

Por su comprension mil gracias-

De antemano gracias
Reciban salu2
  #5 (permalink)  
Antiguo 23/11/2005, 22:10
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 18 años, 6 meses
Puntos: 0
ya quedo!!

Hola de nuez!

Oye mabarcau analice bien el code que pusiste y ya lo acople a mi sp y tmb a mi page aspx, ya puedo saber cual es el id texto del registro que inserto, muchisimas gracias a xknow tmb por su ayuda!!!

Bueno nos vemos, y nos estamos viendo por aki!!!
Reciban salu2
  #6 (permalink)  
Antiguo 24/11/2005, 05:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 17
Antigüedad: 18 años, 5 meses
Puntos: 0
Cita:
Iniciado por mabarcau
cn.Open();
cmd.ExecuteNonQuery();
salida = Int32.Parse(cmd.Parameters["@SALIDA"].Value.ToString());
cn.Close();
Hay otra forma igual de correcta para obtener la salida de una consulta. Es utilizar el método ExecuteScalar en vez de ExecuteNonQuery. Y si la salida es un conjunto de registros, el método para ello es ExecuteReader.

Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:28.