private string GetProcedureParameterLine(MySqlSchemaRow isRow) { string result; using (MySqlDataReader mySqlDataReader = new MySqlCommand(string.Format("SHOW CREATE {0} `{1}`.`{2}`", isRow["ROUTINE_TYPE"], isRow["ROUTINE_SCHEMA"], isRow["ROUTINE_NAME"]), this.connection).ExecuteReader()) { mySqlDataReader.Read(); if (mySqlDataReader.IsDBNull(2)) { result = null; } else { string @string = mySqlDataReader.GetString(1); string string2 = mySqlDataReader.GetString(2); MySqlTokenizer mySqlTokenizer = new MySqlTokenizer(string2); mySqlTokenizer.AnsiQuotes = (@string.IndexOf("ANSI_QUOTES") != -1); mySqlTokenizer.BackslashEscapes = (@string.IndexOf("NO_BACKSLASH_ESCAPES") == -1); string a = mySqlTokenizer.NextToken(); while (a != "(") { a = mySqlTokenizer.NextToken(); } int num = mySqlTokenizer.StartIndex + 1; a = mySqlTokenizer.NextToken(); while (a != ")" || mySqlTokenizer.Quoted) { a = mySqlTokenizer.NextToken(); if (a == "(" && !mySqlTokenizer.Quoted) { while (a != ")" || mySqlTokenizer.Quoted) { a = mySqlTokenizer.NextToken(); } a = mySqlTokenizer.NextToken(); } } result = string2.Substring(num, mySqlTokenizer.StartIndex - num); } } return(result); }