private void bnBug36376_Click(object sender, EventArgs e) { MySqlConnection conn = new MySqlConnection(); conn.ConnectionString = "DataSource=localhost;Database=test;UserID=root;Password=******;PORT=****;Allow Zero Datetime=True;use procedure bodies=false;allow user variables = true";//;respect binary flags=false"; conn.Open(); MySqlCommand cmdCreateTable = new MySqlCommand("DROP TABLE IF EXISTS bug36376", conn); cmdCreateTable.CommandTimeout = 0; cmdCreateTable.ExecuteNonQuery(); cmdCreateTable.CommandText = "CREATE TABLE bug36376 (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, SomeText VARCHAR(50) NOT NULL DEFAULT 'Some text')"; cmdCreateTable.ExecuteNonQuery(); for (int i = 0; i < 10000; i++) { cmdCreateTable.CommandText = ("drop procedure if exists spTest36376"+i); cmdCreateTable.ExecuteNonQuery(); cmdCreateTable.CommandText = ("CREATE PROCEDURE spTest36376"+i+" (IN param1 INT, OUT param2 INT)" + "BEGIN SELECT COUNT(*) INTO param2 FROM bug36376 where Id > param1;END"); cmdCreateTable.ExecuteNonQuery(); } for (int i = 0; i < 5000; i++) { cmdCreateTable.CommandText = ("INSERT INTO bug36376 VALUES (NULL,'SomeText " + i+"');"); cmdCreateTable.ExecuteNonQuery(); } MySqlCommand cmd = new MySqlCommand("spTest363760", conn); cmd.CommandType = CommandType.StoredProcedure; System.DateTime started = DateTime.Now; System.DateTime ended = DateTime.Now; TimeSpan diff = ended - started; //------------------------------------- for (int i = 0; i < 9; i++) { started = DateTime.Now; cmd.Parameters.AddWithValue("param1", 1900 + i); cmd.Parameters[0].Direction = ParameterDirection.Input; cmd.Parameters[0].DbType = DbType.UInt32; cmd.Parameters.Add("param2", MySqlDbType.Int32); cmd.Parameters[1].Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); ended = DateTime.Now; diff = ended - started; Console.WriteLine("RESULT:" + cmd.Parameters[1].Value); Console.WriteLine("Time:" + diff.ToString()); cmd.Parameters.Clear(); } Console.WriteLine("Done Test I__S."); cmd.CommandType = CommandType.Text; for (int i = 1900; i < 1909; i++) { started = DateTime.Now; cmd.CommandText = "SET @a = 0"; cmd.ExecuteNonQuery(); cmd.CommandText = "CALL spTest3637650("+i+",@a)"; cmd.ExecuteNonQuery(); ended = DateTime.Now; diff = ended - started; cmd.CommandText = "SELECT CAST(@a AS CHAR) AS a"; Console.WriteLine("RESULT:" + cmd.ExecuteScalar().ToString()); Console.WriteLine("Time:" + diff.ToString()); } Console.WriteLine("Done Test Direct."); cmd.Dispose(); conn.Close(); MySqlConnection conn1 = new MySqlConnection(); conn1.ConnectionString = "DataSource=localhost;Database=test;UserID=root;Password=******;PORT=****;Allow Zero Datetime=True;use procedure bodies=true;"; conn1.Open(); MySqlCommand cmd1 = new MySqlCommand("spTest36376100", conn1); cmd1.CommandType = CommandType.StoredProcedure; //------------------------------------- for (int i = 0; i < 9; i++) { started = DateTime.Now; cmd1.Parameters.AddWithValue("param1", 1900 + i); cmd1.Parameters[0].Direction = ParameterDirection.Input; cmd1.Parameters[0].DbType = DbType.UInt32; cmd1.Parameters.Add("param2", MySqlDbType.Int32); cmd1.Parameters[1].Direction = ParameterDirection.Output; cmd1.ExecuteNonQuery(); ended = DateTime.Now; diff = ended - started; Console.WriteLine("RESULT:" + cmd1.Parameters[1].Value); Console.WriteLine("Time:" + diff.ToString()); cmd1.Parameters.Clear(); } Console.WriteLine("Done Test mysql.proc."); //CLEAN-UP cmd1.CommandType = CommandType.Text; cmd1.CommandText = "DROP TABLE IF EXISTS bug36376"; cmd1.ExecuteNonQuery(); for (int i = 0; i < 10000; i++) { cmd1.CommandText = ("drop procedure if exists spTest36376" + i); cmd1.ExecuteNonQuery(); } cmd1.Dispose(); conn1.Close(); Console.WriteLine("Done Test Full."); }