-1

I have a StoredProcedure that I created like this;

CREATE DEFINER=`mysqladmin`@`%` PROCEDURE `Alerts_GetAlerts`(IN managerID INT)
BEGIN
    SELECT ID, Type, EmpID, ManagerID, HolID
    FROM Alerts
    WHERE ManagerID = managerID;
END$$

I then try to call this from my C# code like so;

using (var con = new MySqlConnection(MySQLConStr))
{
    con.Open();
    using (MySqlCommand cmd = new MySqlCommand("Alerts_GetAlerts", con))
    {
        cmd.Parameters.AddWithValue("@managerID", managerID);
        using (var dataReader = cmd.ExecuteReader())
        {
            while (dataReader.Read())
            {
                var alert = new AlertsModel
                {
                    ID = Convert.ToInt32(dataReader[0]),
                    Type = Convert.ToInt32(dataReader[1]),
                    ManagerID = Convert.ToInt32(dataReader[2]),
                    EmployeeID = Convert.ToInt32(dataReader[3]),
                    HolidayID = Convert.ToInt32(dataReader[4]),
                };
                AllAlerts.Add(alert);
            }
        }
    }
    return AllAlerts;
}

However I constantly get, Incorrect number of arguments for PROCEDURE sdcdatabase.Alerts_GetAlerts; expected 1, got 0 even though to me it appears I am passing the managerID argument through;

cmd.Parameters.AddWithValue("@managerID", managerID);

Where am I going wrong?

CBreeze
  • 2,925
  • 4
  • 38
  • 93
  • 2
    Try adding `cmd.CommandType = CommandType.StoredProcedure;` – Pikoh Nov 07 '16 at 09:19
  • it will look more like http://stackoverflow.com/a/38706288 – Drew Nov 07 '16 at 09:21
  • Is managerID a variable of type integer? Do not use AddWithValue but use a specific overload of ParametersCollection.Add that allows you to specify the exact datatype of your parameter. – Steve Nov 07 '16 at 09:28
  • 1
    please run the profiler in SQL server and check what is passing through the command. is the way to identify this types of error. – Thomas Nov 07 '16 at 09:44

1 Answers1

-1

try this code

using (var con = new MySqlConnection(MySQLConStr))
{
    con.Open();
    using (MySqlCommand cmd = new MySqlCommand("Alerts_GetAlerts(@managerID)", con))
    {
        cmd.Parameters.AddWithValue("@managerID", managerID);
        using (var dataReader = cmd.ExecuteReader())
        {
            while (dataReader.Read())
            {
                var alert = new AlertsModel
                {
                    ID = Convert.ToInt32(dataReader[0]),
                    Type = Convert.ToInt32(dataReader[1]),
                    ManagerID = Convert.ToInt32(dataReader[2]),
                    EmployeeID = Convert.ToInt32(dataReader[3]),
                    HolidayID = Convert.ToInt32(dataReader[4]),
                };
                AllAlerts.Add(alert);
            }
        }
    }
    return AllAlerts;
}
Sanjeewa
  • 17
  • 1
  • 8