Bug #52785 Fatal error encountered during command execution.
Submitted: 13 Apr 2010 14:19 Modified: 14 Apr 2010 6:20
Reporter: xu hui Email Updates:
Status: Not a Bug Impact on me:
None 
Category:Connector / NET Severity:S1 (Critical)
Version:6.2.2 OS:Any
Assigned to: CPU Architecture:Any
Tags: Fatal error encountered during command execution.

[13 Apr 2010 14:19] xu hui
Description:
My c# code:
            MySqlConnection con = new MySqlConnection("Data Source=127.0.0.1;user id=root;password=11111111;initial catalog=test;");
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            cmd.CommandText = @"CREATE PROCEDURE `PROC_Count1`(IN table_name varchar(100), out p_Count int)
                                BEGIN 
                                  set @p_SqlSelect2 = concat( 'select count(*) into @pCount from (', table_name, ') ');
                                  PREPARE stmt_select2 FROM @p_SqlSelect2;
                                  EXECUTE stmt_select2;
                                  DROP PREPARE stmt_select2;
                                  set p_Count = @pCount;
                                END;";
            try
            {
                cmd.Connection.Open();
                int ret = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
            finally
            {
                con.Close();
            }

Exception:
InnerException = {"Parameter '@p_SqlSelect2' must be defined."}

How to repeat:
My c# code:
            MySqlConnection con = new MySqlConnection("Data Source=127.0.0.1;user id=root;password=11111111;initial catalog=test;");
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            cmd.CommandText = @"CREATE PROCEDURE `PROC_Count1`(IN table_name varchar(100), out p_Count int)
                                BEGIN 
                                  set @p_SqlSelect2 = concat( 'select count(*) into @pCount from (', table_name, ') ');
                                  PREPARE stmt_select2 FROM @p_SqlSelect2;
                                  EXECUTE stmt_select2;
                                  DROP PREPARE stmt_select2;
                                  set p_Count = @pCount;
                                END;";
            try
            {
                cmd.Connection.Open();
                int ret = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
            finally
            {
                con.Close();
            }

Exception:
InnerException = {"Parameter '@p_SqlSelect2' must be defined."}
[14 Apr 2010 6:20] Tonci Grgin
Hi Xu and thanks for your report.

The "ingredient" you're missing is Allow User Variables=true connection string option. Please check the documentation on this and add it to your connection string. Works for me.