Exemplo n.º 1
0
        protected override void FillSprocResults(DBSchemaSproc asproc, DataTable dtSprocResults)
        {
            DataColumn ColumnNameColumn         = GetColumn(dtSprocResults, "COLUMNNAME", true);
            DataColumn OrdinalPositionColumn    = GetColumn(dtSprocResults, "COLUMNORDINAL", true);
            DataColumn DefaultValueColumn       = GetColumn(dtSprocResults, "COLUMNDEFAULT", false);
            DataColumn IsNullableColumn         = GetColumn(dtSprocResults, "ALLOWDBNULL", true);
            DataColumn DataTypeColumn           = GetColumn(dtSprocResults, "DATATYPE", true);
            DataColumn MaxCharacterLengthColumn = GetColumn(dtSprocResults, "COLUMNSIZE", false);
            DataColumn IsReadOnly = GetColumn(dtSprocResults, "ISREADONLY", false);

            foreach (DataRow row in dtSprocResults.Rows)
            {
                DBSchemaViewColumn col = new DBSchemaViewColumn();
                col.Name            = GetColumnStringValue(row, ColumnNameColumn);
                col.OrdinalPosition = GetColumnIntValue(row, OrdinalPositionColumn);
                col.DefaultValue    = GetColumnStringValue(row, DefaultValueColumn);
                col.Nullable        = GetColumnBoolValue(row, IsNullableColumn);
                string type = GetColumnStringValue(row, DataTypeColumn);
                if (!string.IsNullOrEmpty(type))
                {
                    Type t = Type.GetType(type);
                    col.DbType = DBHelper.GetDBTypeForRuntimeType(t);
                    col.Type   = t;
                }
                col.NativeType = type;
                col.Size       = GetColumnIntValue(row, MaxCharacterLengthColumn);
                col.ReadOnly   = GetColumnBoolValue(row, IsReadOnly);
                col.HasDefault = !string.IsNullOrEmpty(col.DefaultValue);

                asproc.Results.Add(col);
            }
        }
        public override void GenerateCreateProcedureScript(DBSchemaSproc schemaSproc, DBScript script)
        {
            if (null == schemaSproc)
            {
                throw new ArgumentNullException("schemaSproc");
            }

            if (string.IsNullOrEmpty(schemaSproc.Name))
            {
                throw new ArgumentNullException("schemaSproc.Name");
            }

            if (schemaSproc.Type != DBSchemaTypes.StoredProcedure)
            {
                throw new ArgumentOutOfRangeException("schemaSproc.Type");
            }

            if (null == script)
            {
                throw new ArgumentNullException("script");
            }

            this._buildingsproc = true;

            this.BeginCreate(DBSchemaTypes.StoredProcedure, null);
            this.WriteSource(schemaSproc.Catalog, schemaSproc.Schema, schemaSproc.Name);

            try
            {
                GenerateRoutineParameters(schemaSproc, true);

                //now just output the script as SQL
                script.BuildStatement(this);
            }
            finally
            {
                this._buildingsproc = false;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Fills the sproc results data from the meta data columns table
        /// </summary>
        /// <param name="asproc"></param>
        /// <param name="dtColumns"></param>
        protected override void FillSprocResults(DBSchemaSproc asproc, DataTable dtColumns)
        {
            if (null == dtColumns)
            {
                return;
            }

            DataColumn ColumnNameColumn      = GetColumn(dtColumns, "ColumnName", true);
            DataColumn OrdinalPositionColumn = GetColumn(dtColumns, "ColumnOrdinal", true);
            DataColumn DefaultValueColumn    = GetColumn(dtColumns, "COLUMN_DEFAULT", false);
            DataColumn IsNullableColumn      = GetColumn(dtColumns, "AllowDBNull", true);
            DataColumn DataTypeColumn        = GetColumn(dtColumns, "DataType", true);
            DataColumn SizeColumn            = GetColumn(dtColumns, "ColumnSize", true);
            DataColumn AutoIncrementColumn   = GetColumn(dtColumns, "IsAutoIncrement", false);
            DataColumn IsReadOnly            = GetColumn(dtColumns, "IsReadOnly", false);

            foreach (DataRow row in dtColumns.Rows)
            {
                DBSchemaViewColumn col = new DBSchemaViewColumn();
                col.Name            = GetColumnStringValue(row, ColumnNameColumn);
                col.OrdinalPosition = GetColumnIntValue(row, OrdinalPositionColumn);
                col.DefaultValue    = GetColumnStringValue(row, DefaultValueColumn);
                col.Nullable        = GetColumnBoolValue(row, IsNullableColumn);
                string type = GetColumnStringValue(row, DataTypeColumn);
                if (!string.IsNullOrEmpty(type))
                {
                    col.Type   = Type.GetType(type);
                    col.DbType = DBHelper.GetDBTypeForRuntimeType(col.Type);
                }
                col.Size     = GetColumnIntValue(row, SizeColumn);
                col.ReadOnly = GetColumnBoolValue(row, IsReadOnly) || GetColumnBoolValue(row, AutoIncrementColumn);

                col.HasDefault = !string.IsNullOrEmpty(col.DefaultValue);

                asproc.Results.Add(col);
            }
        }