Module: PLSQL::SequenceClassMethods

Included in:
Sequence
Defined in:
lib/plsql/sequence.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#find(schema, sequence) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/plsql/sequence.rb', line 3

def find(schema, sequence)
  if schema.select_first(
    "SELECT sequence_name FROM all_sequences
    WHERE sequence_owner = :owner
      AND sequence_name = :sequence_name",
        schema.schema_name, sequence.to_s.upcase)
    new(schema, sequence)
  # search for synonym
  elsif (row = schema.select_first(
    "SELECT t.sequence_owner, t.sequence_name
    FROM all_synonyms s, all_sequences t
    WHERE s.owner IN (:owner, 'PUBLIC')
      AND s.synonym_name = :synonym_name
      AND t.sequence_owner = s.table_owner
      AND t.sequence_name = s.table_name
    ORDER BY DECODE(s.owner, 'PUBLIC', 1, 0)",
        schema.schema_name, sequence.to_s.upcase))
    new(schema, row[1], row[0])
  else
    nil
  end
end