.NET Development
Stored Procedure Output Parameter.
Gravatar is a globally recognized avatar based on your email address. Stored Procedure Output Parameter.
  Craig Tucker
  All
  May 5, 2017 @ 06:21am

Hi Rick, When using the sp ExecuteStoredProcedureNonQuery in the .net wwtoolkit, I have to manually go get the output parameter. In the VFP version, this was always returned as expected. Am I doing something wrong? oi.InvoicePK is initialized as zero, comes out as zero - no errors - so I have to retrieve, last line. Thanks much, Craig

List<IDbDataParameter> _SqlParameters = new List<IDbDataParameter>();
_SqlParameters.Add(manager1.Db.CreateParameter("OrderID", oi.OrderID, ParameterDirection.Input));
_SqlParameters.Add(manager1.Db.CreateParameter("InvPK", **oi.InvoicePK**, ParameterDirection.Output));
int lnReturn = manager1.Db.ExecuteStoredProcedureNonQuery("Centiv_Nexiv2.dbo.InsertFSToInstantImpact", _SqlParameters.ToArray());
**oi.InvoicePK** = Convert.ToInt32(_SqlParameters[1].Value);
Gravatar is a globally recognized avatar based on your email address. re: Stored Procedure Output Parameter.
  Rick Strahl
  Craig Tucker
  May 5, 2017 @ 11:44am

ExecuteStoredProcedure returns the affected record count, so yeah you have to pull the sql parameter out of the collection explicitly.

You don't have to make that as complicated as all that though:

var invPKParam = manager.CreateParameter("InvPk",invPk,ParameterDirection.Output);

int lnReturn = manager.Db.ExecuteStoredProcedureNonQuery(
   "Centiv_Nexiv2.dbo.InsertFSToInstantImpact", 
   manager.CreateParameter("OrderId",oi.OrderId)
   invPKParam);

oi.InvoicePK = invPKParam.Value;

+++ Rick ---

Gravatar is a globally recognized avatar based on your email address. re: Stored Procedure Output Parameter.
  Craig Tucker
  Rick Strahl
  May 5, 2017 @ 12:27pm

That's much better - Thank you!

var invoicePKParam = manager1.Db.CreateParameter("InvPk", oi.InvoicePK, ParameterDirection.Output);
int returnVal = manager1.Db.ExecuteStoredProcedureNonQuery("Centiv_Nexiv2.dbo.InsertFSToInstantImpact",
	manager1.Db.CreateParameter("OrderID", oi.OrderID, ParameterDirection.Input), invoicePKParam);
oi.InvoicePK = Convert.ToInt32(invoicePKParam.Value);

© 1996-2024