//private void ProcessProsWithTempReferences(List<StoredProcDef> storedProcs) //{ // bool added = true; // while (added) // { // added = false; // for (int i = 0; i < storedProcs.Count; i++) // { // string name = storedProcs[i].Name; // name = name.Substring(0, name.IndexOf("|")); // if (StoredProcsWithTempReferences.BinarySearch(name) >= 0) // { // continue; // } // for (int procCounter = 0; procCounter < StoredProcsWithTempReferences.Count; procCounter++) // { // string badProc = StoredProcsWithTempReferences[procCounter]; // if (storedProcs[i].Body.IndexOf(badProc) > 0) // { // StoredProcsWithTempReferences.Add(name); // StoredProcsWithTempReferences.Sort(); // added = true; // break; // } // } // } // } //} private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName, string schema) { if (string.IsNullOrEmpty(schema)) { throw new ArgumentException("Schema must be specified to get stored proc."); } Interfaces.Events.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP"); //_columns = null; //_parameters = null; Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false); storedProcedure.Enabled = false; storedProcedure.Schema = schema; DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName)); foreach (DataRow parameterRow in parameterRows) { Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter( parameterRow["PARAMETER_NAME"].ToString().Replace("@", ""), parameterRow["DATA_TYPE"].ToString(), parameterRow["PARAMETER_MODE"].ToString(), int.Parse(parameterRow["ORDINAL_POSITION"].ToString()), parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : int.Parse(parameterRow["CHARACTER_MAXIMUM_LENGTH"].ToString()), parameterRow.IsNull("NUMERIC_PRECISION") ? 0 : int.Parse(parameterRow["NUMERIC_PRECISION"].ToString()), parameterRow.IsNull("NUMERIC_SCALE") ? 0 : int.Parse(parameterRow["NUMERIC_SCALE"].ToString())); storedProcedure.AddParameter(parameter); } FillStoredProcedureColumns(storedProcedure); return(storedProcedure); }
public override bool Save() { frmAssociationWizard.Association.Mappings.Clear(); frmAssociationWizard.Association.Enabled = true; foreach (DataGridViewRow row in gridMappings.Rows) { string primaryColumnName = row.Cells[0].Value == null ? "" : row.Cells[0].Value.ToString(); string associatedColumnName = row.Cells[1].Value == null ? "" : row.Cells[1].Value.ToString(); string associatedParameterName = row.Cells[2].Value == null ? "" : row.Cells[2].Value.ToString(); primaryColumnName = primaryColumnName.Substring(0, primaryColumnName.IndexOf("(")).Trim(); if (!string.IsNullOrEmpty(associatedColumnName)) { associatedColumnName = associatedColumnName.Substring(0, associatedColumnName.IndexOf("(")).Trim(); } if (!string.IsNullOrEmpty(associatedParameterName)) { associatedParameterName = associatedParameterName.Substring(1, associatedParameterName.IndexOf("(") - 1).Trim(); } Model.Column primaryColumn = null; Model.Column associatedColumn = null; Model.StoredProcedure.Parameter associatedParameter = null; foreach (Model.Column column in frmAssociationWizard.Association.PrimaryObject.Columns) { if (Slyce.Common.Utility.StringsAreEqual(column.Alias, primaryColumnName, false)) { primaryColumn = column; break; } } foreach (Model.Column column in frmAssociationWizard.Association.AssociatedObject.Columns) { if (Slyce.Common.Utility.StringsAreEqual(column.Alias, associatedColumnName, false)) { associatedColumn = column; break; } } if (typeof(Model.StoredProcedure).IsInstanceOfType(frmAssociationWizard.Association.AssociatedObject)) { foreach (Model.StoredProcedure.Parameter parameter in ((Model.StoredProcedure)frmAssociationWizard.Association.AssociatedObject).Parameters) { if (Slyce.Common.Utility.StringsAreEqual(parameter.Alias, associatedParameterName, false)) { associatedParameter = parameter; break; } } } Model.Association.Mapping mapping = new Model.Association.Mapping(primaryColumn, associatedColumn, associatedParameter); frmAssociationWizard.Association.Mappings.Add(mapping); } return(true); }
private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName) { ArchAngel.Interfaces.ProjectHelper.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP"); _parameters = null; Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false); storedProcedure.Enabled = false; DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName)); foreach (DataRow parameterRow in parameterRows) { Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter(parameterRow["PARAMETER_NAME"].ToString(), parameterRow["DATA_TYPE"].ToString(), parameterRow["PARAMETER_MODE"].ToString(), System.Convert.ToInt32(parameterRow["ORDINAL_POSITION"]), parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : System.Convert.ToInt32(parameterRow["CHARACTER_MAXIMUM_LENGTH"])); storedProcedure.AddParameter(parameter); } return(storedProcedure); }
public void FillStoredProcedureColumns(Model.StoredProcedure storedProcedure) { string sql = "exec [" + storedProcedure.Name + "] "; for (int i = 0; i < storedProcedure.Parameters.Length; i++) { Model.StoredProcedure.Parameter parameter = storedProcedure.Parameters[i]; sql += parameter.Name + "=NULL"; if (i < storedProcedure.Parameters.Length - 1) { sql += ", "; } } DataTable dataTable = RunQueryDataTable(sql); while (storedProcedure.Columns.Length > 0) { storedProcedure.RemoveColumn(storedProcedure.Columns[0]); } foreach (DataColumn dataColumn in dataTable.Columns) { Column column = new Column( dataColumn.ColumnName, false, storedProcedure, dataColumn.Ordinal, dataColumn.AllowDBNull, GetSqlDataType(dataColumn.DataType), 0, false, dataColumn.AutoIncrement, dataColumn.DefaultValue.ToString(), false); if (IsSupported(column)) { storedProcedure.AddColumn(column); } } }
//private void ProcessProsWithTempReferences(List<StoredProcDef> storedProcs) //{ // bool added = true; // while (added) // { // added = false; // for (int i = 0; i < storedProcs.Count; i++) // { // string name = storedProcs[i].Name; // name = name.Substring(0, name.IndexOf("|")); // if (StoredProcsWithTempReferences.BinarySearch(name) >= 0) // { // continue; // } // for (int procCounter = 0; procCounter < StoredProcsWithTempReferences.Count; procCounter++) // { // string badProc = StoredProcsWithTempReferences[procCounter]; // if (storedProcs[i].Body.IndexOf(badProc) > 0) // { // StoredProcsWithTempReferences.Add(name); // StoredProcsWithTempReferences.Sort(); // added = true; // break; // } // } // } // } //} private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName, string schema) { if (string.IsNullOrEmpty(schema)) throw new ArgumentException("Schema must be specified to get stored proc."); Interfaces.Events.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP"); //_columns = null; //_parameters = null; Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false); storedProcedure.Enabled = false; storedProcedure.Schema = schema; DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName)); foreach (DataRow parameterRow in parameterRows) { Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter( parameterRow["PARAMETER_NAME"].ToString().Replace("@", ""), parameterRow["DATA_TYPE"].ToString(), parameterRow["PARAMETER_MODE"].ToString(), int.Parse(parameterRow["ORDINAL_POSITION"].ToString()), parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : int.Parse(parameterRow["CHARACTER_MAXIMUM_LENGTH"].ToString()), parameterRow.IsNull("NUMERIC_PRECISION") ? 0 : int.Parse(parameterRow["NUMERIC_PRECISION"].ToString()), parameterRow.IsNull("NUMERIC_SCALE") ? 0 : int.Parse(parameterRow["NUMERIC_SCALE"].ToString())); storedProcedure.AddParameter(parameter); } FillStoredProcedureColumns(storedProcedure); return storedProcedure; }
private Model.StoredProcedure GetNewStoredProcedure(string storedProcedureName) { ArchAngel.Interfaces.ProjectHelper.RaiseObjectBeingProcessedEvent(storedProcedureName, "SP"); _parameters = null; Model.StoredProcedure storedProcedure = new Model.StoredProcedure(storedProcedureName, false); storedProcedure.Enabled = false; DataRow[] parameterRows = Parameters.Select(string.Format("ProcedureName = '{0}'", storedProcedureName)); foreach (DataRow parameterRow in parameterRows) { Model.StoredProcedure.Parameter parameter = new Model.StoredProcedure.Parameter(parameterRow["PARAMETER_NAME"].ToString(), parameterRow["DATA_TYPE"].ToString(), parameterRow["PARAMETER_MODE"].ToString(), System.Convert.ToInt32(parameterRow["ORDINAL_POSITION"]), parameterRow.IsNull("CHARACTER_MAXIMUM_LENGTH") ? 0 : System.Convert.ToInt32(parameterRow["CHARACTER_MAXIMUM_LENGTH"])); storedProcedure.AddParameter(parameter); } return storedProcedure; }