private static DataSet GetProcData(MySqlConnection connection, string spName) { int index = spName.IndexOf("."); string str = spName.Substring(0, index); string str2 = spName.Substring(index + 1, (spName.Length - index) - 1); string[] restrictionValues = new string[4]; restrictionValues[1] = (str.Length > 0) ? str : connection.CurrentDatabase(); restrictionValues[2] = str2; DataTable schema = connection.GetSchema("procedures", restrictionValues); if (schema.Rows.Count > 1) { throw new MySqlException(Resources.ProcAndFuncSameName); } if (schema.Rows.Count == 0) { throw new MySqlException(string.Format(Resources.InvalidProcName, str2, str)); } DataTable procedureParameters = new ISSchemaProvider(connection).GetProcedureParameters(restrictionValues, schema); DataSet set = new DataSet(); set.Tables.Add(schema); set.Tables.Add(procedureParameters); return(set); }
private DataSet GetParameters(string procName) { if (base.Connection.Settings.UseProcedureBodies) { return(base.Connection.ProcedureCache.GetProcedure(base.Connection, procName)); } DataSet set = new DataSet(); string[] restrictionValues = new string[4]; int index = procName.IndexOf('.'); restrictionValues[1] = procName.Substring(0, index++); restrictionValues[2] = procName.Substring(index, procName.Length - index); set.Tables.Add(base.Connection.GetSchema("procedures", restrictionValues)); DataTable routines = new DataTable(); DataTable procedureParameters = new ISSchemaProvider(base.Connection).GetProcedureParameters(null, routines); procedureParameters.TableName = "procedure parameters"; set.Tables.Add(procedureParameters); int num2 = 1; foreach (MySqlParameter parameter in base.command.Parameters) { if (!parameter.TypeHasBeenSet) { throw new InvalidOperationException(Resources.NoBodiesAndTypeNotSet); } DataRow row = procedureParameters.NewRow(); row["PARAMETER_NAME"] = parameter.ParameterName; row["PARAMETER_MODE"] = "IN"; if (parameter.Direction == ParameterDirection.InputOutput) { row["PARAMETER_MODE"] = "INOUT"; } else if (parameter.Direction == ParameterDirection.Output) { row["PARAMETER_MODE"] = "OUT"; } else if (parameter.Direction == ParameterDirection.ReturnValue) { row["PARAMETER_MODE"] = "OUT"; row["ORDINAL_POSITION"] = 0; } else { row["ORDINAL_POSITION"] = num2++; } procedureParameters.Rows.Add(row); } return(set); }
private DataSet GetParameters(string procName) { if (base.Connection.Settings.UseProcedureBodies) { return base.Connection.ProcedureCache.GetProcedure(base.Connection, procName); } DataSet set = new DataSet(); string[] restrictionValues = new string[4]; int index = procName.IndexOf('.'); restrictionValues[1] = procName.Substring(0, index++); restrictionValues[2] = procName.Substring(index, procName.Length - index); set.Tables.Add(base.Connection.GetSchema("procedures", restrictionValues)); DataTable routines = new DataTable(); DataTable procedureParameters = new ISSchemaProvider(base.Connection).GetProcedureParameters(null, routines); procedureParameters.TableName = "procedure parameters"; set.Tables.Add(procedureParameters); int num2 = 1; foreach (MySqlParameter parameter in base.command.Parameters) { if (!parameter.TypeHasBeenSet) { throw new InvalidOperationException(Resources.NoBodiesAndTypeNotSet); } DataRow row = procedureParameters.NewRow(); row["PARAMETER_NAME"] = parameter.ParameterName; row["PARAMETER_MODE"] = "IN"; if (parameter.Direction == ParameterDirection.InputOutput) { row["PARAMETER_MODE"] = "INOUT"; } else if (parameter.Direction == ParameterDirection.Output) { row["PARAMETER_MODE"] = "OUT"; } else if (parameter.Direction == ParameterDirection.ReturnValue) { row["PARAMETER_MODE"] = "OUT"; row["ORDINAL_POSITION"] = 0; } else { row["ORDINAL_POSITION"] = num2++; } procedureParameters.Rows.Add(row); } return set; }