SqlDataAdapter Variable De Sortie À La Question C#

Je n'ai pas de comprendre clairement comment formater le SqlDataAdapter pour les variables de sortie lorsque vous travaillez avec C#

Message D'Erreur:

Indice (base zéro) doit être supérieur ou égal à zéro et inférieur à la taille de la liste d'arguments.

Exemple de Code (Procédure Stockée fonctionne très bien)

        private DataTable updateOrdEodHold(DataTable tb, out string mnpft, out string authld, out string trd, out string hld, out string extnow)
{
//start the connection string
string connstr = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
SqlConnection myConn = new SqlConnection(connstr);
//declare Symbol and assign for Errors Catch Exception
string Symbol = "";
string sqlComm = "dbo.UpdateOrdEodHold";
DataTable HoldVals = new DataTable();
SqlDataAdapter dataAdp = new SqlDataAdapter(sqlComm, myConn);
dataAdp.SelectCommand.CommandType = CommandType.StoredProcedure;
string ticker = (string)Convert.ToString(tb.Rows[0]["Ticker"]);
//update Symbol for Catch ex
Symbol = ticker.ToString();
String company = (string)Convert.ToString(tb.Rows[0]["Company"]);
String avgprofit = (string)Convert.ToString(tb.Rows[0]["AvgProfit"]);
String extdte = (string)Convert.ToString(tb.Rows[0]["ExitDate"]);
dataAdp.SelectCommand.Parameters.Clear();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@ticker", SqlDbType.VarChar, 10));
dataAdp.SelectCommand.Parameters["@ticker"].Value = (string)ticker.ToString();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@company", SqlDbType.VarChar, 25));
dataAdp.SelectCommand.Parameters["@company"].Value = (string)company.ToString();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@avgpft", SqlDbType.VarChar, 10));
dataAdp.SelectCommand.Parameters["@avgpft"].Value = (string)avgprofit.ToString();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@mnpft", SqlDbType.VarChar, 10));
dataAdp.SelectCommand.Parameters["@mnpft"].Direction = ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@authld", SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@authld"].Direction = ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@hld", SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@hld"].Direction = ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@trd", SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@trd"].Direction = ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@extnow", SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@extnow"].Direction = ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@extdte", SqlDbType.VarChar, 15));
dataAdp.SelectCommand.Parameters["@extdte"].Value = (string)extdte.ToString();
dataAdp.Fill(HoldVals);
mnpft = HoldVals.Rows[0]["MinProfit"].ToString();
authld = HoldVals.Rows[0]["AutoHold"].ToString();
trd = HoldVals.Rows[0]["Trade"].ToString();
hld = HoldVals.Rows[0]["Hold"].ToString();
extnow = HoldVals.Rows[0]["ExitNow"].ToString();
return HoldVals;
}

OriginalL'auteur CraigJSte | 2010-10-03