Приложение Rails с пакетами Oracle всегда выдает одну и ту же ошибку - PullRequest
0 голосов
/ 10 октября 2019

Я работаю с приложением Rails, которое взаимодействует с базой данных Oracle.

У меня есть контроллер ProjectsController с методом register_company, который устанавливает связь с хранимой процедурой Oracleиз пакета.

Я определил экземпляр plsql из config/initializers/oracle.rb:

plsql.activerecord_class = ActiveRecord::Base

Это код для контроллера app/controllers/projects_controller.rb:

class ProjectsController < ApplicationController
  $current_user = {
    registration_number: 'A00826345',
    period: '201912',
    campus: 'A'
  }

  def register_company
    @register_result = [0]
    @student_companies = [['1', 'Empresa Uno'],['5', 'Empresa Cinco'], ['14', 'Empresa Catorce'], ['30', 'Empresa Treinta']]
    @message = []
    begin
      plsql.PORTAL_SIASS_PKG.SP_ALTA_EMPRESA(
          $current_user[:registration_number],
          $current_user[:campus],
          $current_user[:period],
          params[:company][:name],
          params[:company][:rfc],
          params[:company][:type],
          params[:company][:size],
          params[:company][:street],
          params[:company][:number],
          params[:company][:colony],
          params[:company][:municipality],
          params[:company][:city],
          params[:company][:state],
          params[:company][:person_name],
          params[:company][:person_position],
          params[:company][:person_phone1],
          params[:company][:person_phone2],
          params[:company][:person_ext1],
          params[:company][:person_ext2],
          params[:company][:person_email],
          params[:company][:person_fax],
          params[:company][:person_schedule],
          params[:company][:project_activities],
          params[:company][:project_description]
      ) do |cursor|
          @register_result = cursor[:resultado]
          puts @register_result.to_s
          @message = cursor[:mensaje].fetch_all
          puts @message
          @student_companies = cursor[:p_recordset].fetch_all
      end
    rescue StandardError => e
      puts e
      @register_result = [1]
      @message = [e.message]
    end
    respond_to do |format|
      format.js {render 'new_company'}
    end
  end
end

Проблемаесть, когда я пытаюсь сделать запрос, отправляя данные, сервер показывает ошибку:

Completed 500 Internal Server Error in 190ms (ActiveRecord: 0.0ms)



OCIError (ORA-24338: statement handle not executed):

app/controllers/projects_controller.rb:72:in `register_company'
  Rendering C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb
  Rendering C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/_source.text.erb
  Rendered C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/_source.text.erb (0.0ms)
  Rendering C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb
  Rendered C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (1.0ms)
  Rendering C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb
  Rendered C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (1.0ms)
  Rendered C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb (1103.8ms)

, где строка 72 соответствует вызову хранимой процедуры:

plsql.PORTAL_SIASS_PKG.SP_ALTA_EMPRESA(

Однако, когда я тестирую ту же процедуру в SQL Developer с теми же параметрами, которые я отправляю, она работает правильно.

Я предполагал, что проблема в приложении rails, но я не знаю, где она.

Надеюсь, вы поможете мне решить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...