コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ProcedureCache.cs プロジェクト: GodLesZ/svn-dump
		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;
		}
コード例 #4
0
ファイル: StoredProcedure.cs プロジェクト: GodLesZ/svn-dump
		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;
		}