Module: PLSQL::ProcedureClassMethods

Included in:
Procedure
Defined in:
lib/plsql/procedure.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#find(schema, procedure_name, package_name = nil, override_schema_name = nil) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/plsql/procedure.rb', line 4

def find(schema, procedure_name, package_name = nil, override_schema_name = nil)
  if package_name
    find_procedure_in_package(schema, package_name, procedure_name, override_schema_name)
  else
    find_procedure_in_schema(schema, procedure_name) || find_procedure_by_synonym(schema, procedure_name)
  end
end

#find_procedure_by_synonym(schema, procedure_name) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/plsql/procedure.rb', line 24

def find_procedure_by_synonym(schema, procedure_name)
  row = schema.select_first("    SELECT p.owner, p.object_name, p.object_id\n    FROM   all_synonyms s,\n           all_procedures p\n    WHERE  s.owner IN (:owner, 'PUBLIC')\n    AND    s.synonym_name = :synonym_name\n    AND    p.owner        = s.table_owner\n    AND    p.object_name  = s.table_name\n    AND    p.object_type IN ('PROCEDURE','FUNCTION')\n    AND    p.pipelined    = 'NO'\n    ORDER BY DECODE(s.owner, 'PUBLIC', 1, 0)\n  SQL\n  new(schema, row[1], nil, row[0], row[2]) if row\nend\n", schema.schema_name, procedure_name.to_s.upcase)

#find_procedure_in_package(schema, package_name, procedure_name, override_schema_name = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/plsql/procedure.rb', line 40

def find_procedure_in_package(schema, package_name, procedure_name, override_schema_name = nil)
  schema_name = override_schema_name || schema.schema_name
  row = schema.select_first("    SELECT o.object_id\n    FROM   all_procedures p,\n           all_objects o\n    WHERE  p.owner       = :owner\n    AND    p.object_name = :object_name\n    AND    p.procedure_name = :procedure_name\n    AND    p.pipelined   = 'NO'\n    AND    o.owner       = p.owner\n    AND    o.object_name = p.object_name\n    AND    o.object_type = 'PACKAGE'\n  SQL\n  new(schema, procedure_name, package_name, override_schema_name, row[0]) if row\nend\n", schema_name, package_name, procedure_name.to_s.upcase)

#find_procedure_in_schema(schema, procedure_name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/plsql/procedure.rb', line 12

def find_procedure_in_schema(schema, procedure_name)
  row = schema.select_first("    SELECT object_id\n    FROM   all_procedures\n    WHERE  owner = :owner\n    AND    object_name = :object_name\n    AND    object_type IN ('PROCEDURE', 'FUNCTION')\n    AND    pipelined = 'NO'\n  SQL\n  new(schema, procedure_name, nil, nil, row[0]) if row\nend\n", schema.schema_name, procedure_name.to_s.upcase)