Module: PLSQL::PackageClassMethods

Included in:
Package
Defined in:
lib/plsql/package.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#find(schema, package) ⇒ Object



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

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