예제 #1
0
        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);
        }