Posteado por: eurecadigital | abril 22, 2009

Recuperar un valor devuelto por un Stored Procedure de SQL-Server con ADO.Net

Nada mejor que un ejemplo para ver el funcionamiento. Supongamos que tenemos un SP que acepta una serie de parámetros que se insertan en una tabla con una clave primaria autonumérica.

El Stored procedure deberá tener la siguiente forma:

CREATE PROCEDURE insertarLog(@LogMsg varchar(512), @LogNiv smallint, @LogFec datetime, @LogCbl varchar(8), @LogEst varchar(30), @LogUsr varchar(30), @LogFile varchar(50))

AS

BEGIN

INSERT INTO TRLOG (LogMsg, LogNiv, LogFec, LogCbl, LogEst, LogUsr, LogFile)

VALUES(@LogMsg, @LogNiv, @LogFec, @LogCbl, @LogEst, @LogUsr, @LogFile)

RETURN @@IDENTITY

END

GO

Como vemos en este ejemplo tenemos que utilizar la palabra RETURN para devolver el valor. En este ejemplo es el valor del campo clave identidad que se ha insertado en la tabla.
Luego en .Net pondríamos algo así para recuperar el valor.
SqlConnection con = new SqlConnection(“…..”);
try
{
SqlCommand command = new SqlCommand(“nombreSP”, con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(“@LogMsg”, SqlDbType.Char).Value = …;
command.Parameters.Add(“@LogNiv”, SqlDbType.SmallInt).Value = …;
command.Parameters.Add(“@LogFec”, SqlDbType.DateTime).Value = …;
……
……
//Valor devuelto ******************
command.Parameters.Add(“@RETURN_VALUE”, SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
con.Open();
command.ExecuteNonQuery();
int result = (int)command.Parameters[“@RETURN_VALUE”].Value;
con.Close();
return result;
}
……………

Responses

  1. […] https://eurecadigital.wordpress.com/2009/04/22/recuperar-un-valor-devuelto-por-un-stored-procedure-de… […]

  2. AMigo, y como puedo hacer para capturar ese valor, pero en VB 6.0….Gracias

  3. porfavor necesito ayuda sobre este temaaaa…..Gracias

  4. o puedes poner el nombre de la variable en el return!
    RETURN @@variable por que el otro no me funciono no me traia el dato correcto

  5. me salvaste la vida chabon, gracias por el conocimiento😉

  6. Muchas gracias aun años después ^.^


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: