Module: PLSQL::VariableClassMethods

Included in:
Variable
Defined in:
lib/plsql/variable.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#find(schema, variable, package, override_schema_name = nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/plsql/variable.rb', line 4

def find(schema, variable, package, override_schema_name = nil)
  variable_upcase = variable.to_s.upcase
  schema.select_all(
        "SELECT text FROM all_source
        WHERE owner = :owner
          AND name = :object_name
          AND type = 'PACKAGE'
          AND UPPER(text) LIKE :variable_name",
        override_schema_name || schema.schema_name, package, "%#{variable_upcase}%").each do |row|
    if row[0] =~ /^\s*#{variable_upcase}\s+(CONSTANT\s+)?([A-Z0-9_. %]+(\([\w\s,]+\))?)\s*(NOT\s+NULL)?\s*((:=|DEFAULT).*)?;\s*(--.*)?$/i
      return new(schema, variable, package, $2.strip, override_schema_name)
    end
  end
  nil
end