Hi! I've been breaking my head trying to get the output variables from my Stored Procedure.
This is my SP code
And this is my C# Code
If I debug the SP in SQL Management Studio, I get the correct values. But in C#, after executing the reader, whenever I try to access the parameter values (example, cmd.Parameters["@timeOrder "].Value), all output parameters are always 0.
Any ideas?
Thanks!!!
This is my SP code
Code:
CREATE PROCEDURE GetKitchenOrderDetail( @idService int, --outPut Variables @idUser int OUTPUT, @estTimeDelivery datetime = null OUTPUT, @timeDelivered datetime = null OUTPUT, @timeOrder datetime = null OUTPUT, @estTimePrepare int OUTPUT, @estatus int OUTPUT ) AS BEGIN --getting the output variables SELECT @idUser = s.idUser, @estTimeDelivery = ko.estTimeDelivery, @timeDelivered = ko.timeDelivery, @timeOrder = s.timeOrder, @estTimePrepare = (DATEDIFF(MINUTE, @timeOrder, @estTimeDelivery)), @estatus = ko.estatus FROM ServiceOffered AS s JOIN KitchenOrder AS ko ON ko.idService = s.idService JOIN Area AS a on a.idArea = ko.idArea WHERE s.idService = @idService --getting the values I want from a query SELECT koi.idItem, koi.price, koi.quantity, mi.name, mi.itemDescription, c.name AS category FROM KitchenOrderItems koi JOIN MenuItem mi ON mi.idItem = koi.idItem JOIN Category as c ON c.idCategory = mi.idCategory WHERE koi.idService = @idService END
Code:
SqlCommand cmd = new SqlCommand("GetKitchenOrderDetail", new SqlConnection(connectionString)); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Connection.Open(); //add serviceId cmd.Parameters.AddWithValue("@idService", idService); [INDENT]//start adding the output parameters[/INDENT] [INDENT]//method1 I tried creating a parameter object[/INDENT] SqlParameter estTimePrepare = new SqlParameter("@estTimePrepare", System.Data.SqlDbType.Int); estTimePrepare.Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add(estTimePrepare); [INDENT]//method2 I tried creating the parameters directly in the command[/INDENT] cmd.Parameters.Add("@estTimeDelivery", System.Data.SqlDbType.DateTime); cmd.Parameters["@estTimeDelivery"].Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add("@timeDelivered", System.Data.SqlDbType.DateTime); cmd.Parameters["@timeDelivered"].Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add("@timeOrder", System.Data.SqlDbType.DateTime); cmd.Parameters["@timeOrder"].Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add("@estatus", System.Data.SqlDbType.Int); cmd.Parameters["@estatus"].Direction = System.Data.ParameterDirection.Output; //method3, cmd.Parameters.AddWithValue("@idUser", 0); SqlDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.Default);
Any ideas?
Thanks!!!
Comment