Class: OCI8::Metadata::Type

Inherits:
Base
  • Object
show all
Defined in:
lib/oci8/metadata.rb

Overview

Information about types

An instance of this class is returned by:

  • OCI8#describe_any(name)
  • OCI8#describe_type(name)
  • OCI8::Metadata::Schema#all_objects
  • OCI8::Metadata::Schema#objects

Instance Method Summary collapse

Methods inherited from Base

#obj_id, #obj_name, #obj_schema

Instance Method Details

#collection_element ⇒ OCI8::Metadata::Collection or nil

Returns element information of the collection type if the type is a nested table or a varray. Otherwise, nil.

Returns:



755
756
757
# File 'lib/oci8/metadata.rb', line 755

def collection_element
  __param(OCI_ATTR_COLLECTION_ELEMENT) if typecode == :named_collection
end

#collection_typecode ⇒ :table, :varray or nil

Returns :table if the type is a nested table, :varray if it is a varray. Otherwise, nil.

Returns:

  • (:table, :varray or nil)


689
690
691
# File 'lib/oci8/metadata.rb', line 689

def collection_typecode
  __typecode(OCI_ATTR_COLLECTION_TYPECODE) if typecode == :named_collection
end

#has_file? ⇒ Boolean

Returns true if the type has a BFILE attribute. Otherwise, false.

Returns:

  • (Boolean)


746
747
748
# File 'lib/oci8/metadata.rb', line 746

def has_file?
  attr_get_ub1(OCI_ATTR_HAS_FILE) != 0
end

#has_lob? ⇒ Boolean

Returns true if the type has a CLOB, NCLOB or BLOB attribute. Otherwise, false.

Returns:

  • (Boolean)


740
741
742
# File 'lib/oci8/metadata.rb', line 740

def has_lob?
  attr_get_ub1(OCI_ATTR_HAS_LOB) != 0
end

#has_nested_table? ⇒ Boolean

Returns true if the type is a nested table or has a nested table attribute. Otherwise, false.

Returns:

  • (Boolean)


733
734
735
# File 'lib/oci8/metadata.rb', line 733

def has_nested_table?
  attr_get_ub1(OCI_ATTR_HAS_NESTED_TABLE) != 0
end

#inspect ⇒ Object

:nodoc:



876
877
878
# File 'lib/oci8/metadata.rb', line 876

def inspect # :nodoc:
  "#<#{self.class.name}:(#{obj_id}) #{schema_name}.#{name}>"
end

#is_final_type? ⇒ Boolean

Returns true if the type is a final type; in other words, subtypes cannot be derived from the type. Otherwise, false.

Returns:

  • (Boolean)


828
829
830
# File 'lib/oci8/metadata.rb', line 828

def is_final_type?
  attr_get_ub1(OCI_ATTR_IS_FINAL_TYPE) != 0
end

#is_incomplete_type? ⇒ Boolean

Returns true if the type is an incomplete type, which is used for forward declaration. Otherwise, false.

Returns:

  • (Boolean)


697
698
699
# File 'lib/oci8/metadata.rb', line 697

def is_incomplete_type?
  attr_get_ub1(OCI_ATTR_IS_INCOMPLETE_TYPE) != 0
end

#is_instantiable_type? ⇒ Boolean

Returns true if the type is not declared without NOT INSTANTIABLE. Otherwise, false.

Returns:

  • (Boolean)


835
836
837
# File 'lib/oci8/metadata.rb', line 835

def is_instantiable_type?
  attr_get_ub1(OCI_ATTR_IS_INSTANTIABLE_TYPE) != 0
end

#is_invoker_rights? ⇒ Boolean

Returns true if the type has invoker's rights. Otherwise, false.

Returns:

  • (Boolean)


806
807
808
# File 'lib/oci8/metadata.rb', line 806

def is_invoker_rights?
  attr_get_ub1(OCI_ATTR_IS_INVOKER_RIGHTS) != 0
end

#is_predefined_type? ⇒ Boolean

Always returns false.

I don't know the definition of predefined type...

Returns:

  • (Boolean)


711
712
713
# File 'lib/oci8/metadata.rb', line 711

def is_predefined_type? # :nodoc:
  attr_get_ub1(OCI_ATTR_IS_PREDEFINED_TYPE) != 0
end

#is_subtype? ⇒ Boolean

Returns true if the type is a subtype. Otherwise, false.

Returns:

  • (Boolean)


842
843
844
# File 'lib/oci8/metadata.rb', line 842

def is_subtype?
  attr_get_ub1(OCI_ATTR_IS_SUBTYPE) != 0
end

#is_system_generated_type? ⇒ Boolean

Always returns false.

I don't know the definition of system generated type. What is different with system type and predefined type.

Returns:

  • (Boolean)


726
727
728
# File 'lib/oci8/metadata.rb', line 726

def is_system_generated_type? # :nodoc:
  attr_get_ub1(OCI_ATTR_IS_SYSTEM_GENERATED_TYPE) != 0
end

#is_system_type? ⇒ Boolean

Always returns false because there is no way to create a type metadata object for a system type such as NUMBER, CHAR and VARCHAR.

Returns:

  • (Boolean)


704
705
706
# File 'lib/oci8/metadata.rb', line 704

def is_system_type? # :nodoc:
  attr_get_ub1(OCI_ATTR_IS_SYSTEM_TYPE) != 0
end

#is_transient_type? ⇒ Boolean

Always returns false because there is no way to create a type metadata object for a transient type, which is a type dynamically created by C API.

Returns:

  • (Boolean)


718
719
720
# File 'lib/oci8/metadata.rb', line 718

def is_transient_type? # :nodoc:
  attr_get_ub1(OCI_ATTR_IS_TRANSIENT_TYPE) != 0
end

#map_method ⇒ OCI8::Metadata::TypeMethod or nil

Returns information of the map method if it is defined in the type. Otherwise, nil.

Returns:



790
791
792
# File 'lib/oci8/metadata.rb', line 790

def map_method
  __param(OCI_ATTR_MAP_METHOD)
end

#name ⇒ String

Returns the type name.

Returns:



813
814
815
# File 'lib/oci8/metadata.rb', line 813

def name
  attr_get_string(OCI_ATTR_NAME)
end

#num_type_attrs ⇒ Integer

Returns number of type attributes.

Returns:

  • (Integer)


762
763
764
# File 'lib/oci8/metadata.rb', line 762

def num_type_attrs
  attr_get_ub2(OCI_ATTR_NUM_TYPE_ATTRS)
end

#num_type_methods ⇒ Integer

Returns number of type methods.

Returns:

  • (Integer)


775
776
777
# File 'lib/oci8/metadata.rb', line 775

def num_type_methods
  attr_get_ub2(OCI_ATTR_NUM_TYPE_METHODS)
end

#order_method ⇒ OCI8::Metadata::TypeMethod or nil

Returns information of the order method if it is defined in the type. Otherwise, nil.

Returns:



799
800
801
# File 'lib/oci8/metadata.rb', line 799

def order_method
  __param(OCI_ATTR_ORDER_METHOD)
end

#schema_name ⇒ String

Returns the schema name where the type has been created.

Returns:



820
821
822
# File 'lib/oci8/metadata.rb', line 820

def schema_name
  attr_get_string(OCI_ATTR_SCHEMA_NAME)
end

#supertype_name ⇒ String or nil

Returns the supertype's name if the type is a subtype. Otherwise, nil.

Returns:



858
859
860
# File 'lib/oci8/metadata.rb', line 858

def supertype_name
  attr_get_string(OCI_ATTR_SUPERTYPE_NAME) if is_subtype?
end

#supertype_schema_name ⇒ String or nil

Returns the supertype's schema name if the type is a subtype. Otherwise, nil.

Returns:



850
851
852
# File 'lib/oci8/metadata.rb', line 850

def supertype_schema_name
  attr_get_string(OCI_ATTR_SUPERTYPE_SCHEMA_NAME) if is_subtype?
end

#type_attrs ⇒ array of OCI8::Metadata::TypeAttr

Returns attribute information of the type.

Returns:



865
866
867
# File 'lib/oci8/metadata.rb', line 865

def type_attrs
  @type_attrs ||= list_type_attrs.to_a
end

#type_metadata ⇒ Object

to type metadata if possible



673
674
675
# File 'lib/oci8/metadata.rb', line 673

def 
  self
end

#type_methods ⇒ array of OCI8::Metadata::TypeMethod

Returns method information of the type.

Returns:



872
873
874
# File 'lib/oci8/metadata.rb', line 872

def type_methods
  @type_methods ||= list_type_methods.to_a
end

#typecode ⇒ :named_type or :named_collection

Returns :named_type if the type is an object type, :named_collection if it is a nested table or a varray.

Returns:

  • (:named_type or :named_collection)


681
682
683
# File 'lib/oci8/metadata.rb', line 681

def typecode
  __typecode(OCI_ATTR_TYPECODE)
end