示例#1
0
        private static KeyValuePair <OracleObjectIdentifier, OracleColumn> MapTableColumn(IDataRecord reader, Version version)
        {
            var dataTypeIdentifier = OracleObjectIdentifier.Create(QualifyStringObject(reader["DATA_TYPE_OWNER"]), QualifyStringObject(reader["DATA_TYPE"]));
            var dataType           =
                new OracleDataType
            {
                FullyQualifiedName = dataTypeIdentifier,
                Length             = Convert.ToInt32(reader["DATA_LENGTH"]),
                Precision          = OracleReaderValueConvert.ToInt32(reader["DATA_PRECISION"]),
                Scale = OracleReaderValueConvert.ToInt32(reader["DATA_SCALE"])
            };

            ResolveDataUnit(dataType, reader["CHAR_USED"]);

            var column =
                new OracleColumn
            {
                Name          = QualifyStringObject(reader["COLUMN_NAME"]),
                DataType      = dataType,
                Nullable      = String.Equals((string)reader["NULLABLE"], "Y"),
                Virtual       = String.Equals((string)reader["VIRTUAL_COLUMN"], "YES"),
                DefaultValue  = OracleReaderValueConvert.ToString(reader["DATA_DEFAULT"]),
                CharacterSize = Convert.ToInt32(reader["CHAR_LENGTH"]),
                UserGenerated = true
            };

            if (version.Major >= 12)
            {
                column.Hidden        = String.Equals((string)reader["HIDDEN_COLUMN"], "YES");
                column.UserGenerated = String.Equals((string)reader["USER_GENERATED"], "YES");
            }

            return(new KeyValuePair <OracleObjectIdentifier, OracleColumn>(
                       OracleObjectIdentifier.Create(QualifyStringObject(reader["OWNER"]), QualifyStringObject(reader["TABLE_NAME"])), column));
        }
示例#2
0
        private static OracleTypeObject MapTypeAttributes(IDataRecord reader, IDictionary <OracleObjectIdentifier, OracleSchemaObject> allObjects)
        {
            var typeFullyQualifiedName = OracleObjectIdentifier.Create(QualifyStringObject(reader["OWNER"]), QualifyStringObject(reader["TYPE_NAME"]));

            if (!allObjects.TryGetValue(typeFullyQualifiedName, out OracleSchemaObject typeObject))
            {
                return(null);
            }

            var type = (OracleTypeObject)typeObject;
            var attributeTypeIdentifier = OracleObjectIdentifier.Create(QualifyStringObject(reader["ATTR_TYPE_OWNER"]), QualifyStringObject(reader["ATTR_TYPE_NAME"]));

            var dataType =
                new OracleDataType
            {
                FullyQualifiedName = attributeTypeIdentifier,
                Length             = OracleReaderValueConvert.ToInt32(reader["LENGTH"]),
                Precision          = OracleReaderValueConvert.ToInt32(reader["PRECISION"]),
                Scale = OracleReaderValueConvert.ToInt32(reader["SCALE"])
            };

            ResolveDataUnit(dataType, reader["CHAR_USED"]);

            var attribute =
                new OracleTypeAttribute
            {
                Name        = QualifyStringObject(reader["ATTR_NAME"]),
                DataType    = dataType,
                IsInherited = String.Equals((string)reader["INHERITED"], "YES")
            };

            type.Attributes.Add(attribute);

            return(type);
        }
示例#3
0
        private static OracleTypeCollection MapCollectionTypeAttributes(IDataRecord reader, IDictionary <OracleObjectIdentifier, OracleSchemaObject> allObjects)
        {
            var typeFullyQualifiedName = OracleObjectIdentifier.Create(QualifyStringObject(reader["OWNER"]), QualifyStringObject(reader["TYPE_NAME"]));

            if (!allObjects.TryGetValue(typeFullyQualifiedName, out OracleSchemaObject typeObject))
            {
                return(null);
            }

            var collectionType        = (OracleTypeCollection)typeObject;
            var elementTypeIdentifier = OracleObjectIdentifier.Create(QualifyStringObject(reader["ELEM_TYPE_OWNER"]), QualifyStringObject(reader["ELEM_TYPE_NAME"]));

            var dataType =
                new OracleDataType
            {
                FullyQualifiedName = elementTypeIdentifier,
                Length             = OracleReaderValueConvert.ToInt32(reader["LENGTH"]),
                Precision          = OracleReaderValueConvert.ToInt32(reader["PRECISION"]),
                Scale = OracleReaderValueConvert.ToInt32(reader["SCALE"])
            };

            ResolveDataUnit(dataType, reader["CHARACTER_SET_NAME"]);

            collectionType.ElementDataType = dataType;
            collectionType.CollectionType  = (string)reader["COLL_TYPE"] == OracleTypeCollection.OracleCollectionTypeNestedTable ? OracleCollectionType.Table : OracleCollectionType.VarryingArray;
            collectionType.UpperBound      = OracleReaderValueConvert.ToInt32(reader["UPPER_BOUND"]);

            return(collectionType);
        }
示例#4
0
        private static OracleProgramMetadata MapProgramMetadata(IDataRecord reader, bool isBuiltIn, IDictionary <int, OracleProgramMetadata> metadataDictionary)
        {
            var functionId               = OracleReaderValueConvert.ToInt32(reader["FUNCTION_ID"]);
            var identifier               = CreateFunctionIdentifierFromReaderValues(reader["OWNER"], reader["PACKAGE_NAME"], reader["PROGRAM_NAME"], reader["OVERLOAD"]);
            var type                     = Convert.ToBoolean(reader["IS_FUNCTION"]) ? ProgramType.Function : ProgramType.Procedure;
            var isAnalytic               = String.Equals((string)reader["ANALYTIC"], "YES");
            var isAggregate              = String.Equals((string)reader["AGGREGATE"], "YES");
            var isPipelined              = String.Equals((string)reader["PIPELINED"], "YES");
            var isOffloadable            = String.Equals((string)reader["OFFLOADABLE"], "YES");
            var parallelSupport          = String.Equals((string)reader["PARALLEL"], "YES");
            var isDeterministic          = String.Equals((string)reader["DETERMINISTIC"], "YES");
            var metadataMinimumArguments = OracleReaderValueConvert.ToInt32(reader["MINARGS"]);
            var metadataMaximumArguments = OracleReaderValueConvert.ToInt32(reader["MAXARGS"]);
            var authId                   = String.Equals((string)reader["AUTHID"], "CURRENT_USER") ? AuthId.CurrentUser : AuthId.Definer;
            var displayType              = (string)reader["DISP_TYPE"];

            var metadata = new OracleProgramMetadata(type, identifier, isAnalytic, isAggregate, isPipelined, isOffloadable, parallelSupport, isDeterministic, metadataMinimumArguments, metadataMaximumArguments, authId, displayType, isBuiltIn);

            if (functionId.HasValue)
            {
                metadataDictionary.Add(functionId.Value, metadata);
            }

            return(metadata);
        }