5

En un proyecto de C#, que llama a un procedimiento almacenado de la siguiente manera:Cómo usar DataContext.ExecuteCommand y obtener el valor de retorno de proc almacenado ejecutado?

System.Data.Linq.DataContext dataContext = MembershipContext.GetContext(connectionString); 
int returnValue = dataContext.ExecuteCommand("EXEC usp_SomeProcedure {0}, {1}, {2}", param1, param2, param3); 

Sin embargo, ExecuteCommand devuelve el número de filas afectadas, y no mi valor de retorno del procedimiento almacenado. ¿Cuál sería la forma más fácil de obtener este valor? Necesito esto porque el SP devuelve 0 en caso de éxito y un valor int positivo si ocurre un error.

Por ahora, el proceso almacenado usa RETORNO para generar su valor de retorno. Sin embargo, podría cambiar esto por un SELECT o también podría usar un parámetro de salida si es necesario.

Respuesta

4

Creo que necesita establecer CommandType en CommandType.StoredProcedure para obtener el valor de retorno de su proceso almacenado. Consulte la respuesta aceptada aquí: Getting return value from stored procedure in ADO.NET

+0

Utilicé el ejemplo dado en la página que mencionaste también, y está funcionando. Ya no uso el DataContext como sugirió Serg Rogovtsev. +1 a los dos! –

2

No utilice DataContext para llamar a SP si no necesita la funcionalidad de asignación de Linq2Sql. Simplemente use SqlCommand como down.with.the.bass shows.

Cuestiones relacionadas