Method: OCI8#describe_table
- Defined in:
- lib/oci8/metadata.rb
#describe_table(table_name, table_only = false) ⇒ OCI8::Metadata::Table or OCI8::Metadata::View
Returns table or view information. If the name is a current schema’s synonym name or a public synonym name, it returns table or view information which the synonym refers.
If table_only is true, it checks tables in the current schema.
2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 |
# File 'lib/oci8/metadata.rb', line 2050 def describe_table(table_name, table_only = false) if table_only # check my own tables only. __describe(table_name, OCI8::Metadata::Table, false) else # check tables, views, synonyms and public synonyms. # follow synonyms up to 20 times to prevent infinite loop # caused by recursive synonyms. recursive_level = 20 recursive_level.times do = __describe(table_name, OCI8::Metadata::Unknown, true) case when OCI8::Metadata::Table, OCI8::Metadata::View return when OCI8::Metadata::Synonym table_name = .translated_name if .obj_link and .link.nil? # table_name is a synonym in a remote database for an object in the # remote database itself. table_name = "#{table_name}@#{metadata.obj_link}" end else raise OCIError.new(4043, table_name) # ORA-04043: object %s does not exist end end raise OCIError.new(36, recursive_level) # ORA-00036: maximum number of recursive SQL levels (%s) exceeded end end |