module ActiveRecord::ConnectionAdapters::OracleEnhanced::DbmsOutput

Constants

DBMS_OUTPUT_BUFFER_SIZE

Maximum DBMS_OUTPUT buffer size

Public Instance Methods

dbms_output_enabled?() click to toggle source

Is DBMS_Output logging enabled?

# File lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb, line 29
def dbms_output_enabled?
  @enable_dbms_output
end
disable_dbms_output() click to toggle source

Turn DBMS_Output logging off

# File lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb, line 23
def disable_dbms_output
  set_dbms_output_plsql_connection
  @enable_dbms_output = false
  plsql(:dbms_output).sys.dbms_output.disable
end
enable_dbms_output() click to toggle source

Turn DBMS_Output logging on

# File lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb, line 17
def enable_dbms_output
  set_dbms_output_plsql_connection
  @enable_dbms_output = true
  plsql(:dbms_output).sys.dbms_output.enable(DBMS_OUTPUT_BUFFER_SIZE)
end

Private Instance Methods

log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil, async: false) click to toggle source
Calls superclass method
# File lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb, line 34
def log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil, async: false)
  super
ensure
  log_dbms_output if dbms_output_enabled?
end
log_dbms_output() click to toggle source
# File lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb, line 48
def log_dbms_output
  while true do
    result = plsql(:dbms_output).sys.dbms_output.get_line(line: "", status: 0)
    break unless result[:status] == 0
    @logger.debug "DBMS_OUTPUT: #{result[:line]}" if @logger
  end
end
set_dbms_output_plsql_connection() click to toggle source
# File lib/active_record/connection_adapters/oracle_enhanced/dbms_output.rb, line 40
def set_dbms_output_plsql_connection
  raise OracleEnhanced::ConnectionException, "ruby-plsql gem is required for logging DBMS output" unless self.respond_to?(:plsql)
  # do not reset plsql connection if it is the same (as resetting will clear PL/SQL metadata cache)
  unless plsql(:dbms_output).connection && plsql(:dbms_output).connection.raw_connection == raw_connection
    plsql(:dbms_output).connection = raw_connection
  end
end