3

我是 ROR 的新手。当我单击 VIEW 中的提交按钮时,我想调用存储过程进行处理。

    Model:
    -------

    class Pro::DataImport < ActiveRecord::Base
      attr_accessible :file_name, :process_name, :updated_by, :validates

    end

    Controller:
    -----------------

    class Pro::DataImportsController < ApplicationController
       before_filter :authenticate_user!
      layout "layouts/enr/energy_master"

      def index
       @pro_data_imports = Pro::DataImport.all 
      end

      def new
        @pro_data_import = Pro::DataImport.new
      end

    end

    View
    ----------

     <%= form_for @pro_data_import do %>

  <div class="field">
    Browse the file to upload:<br />
    <%= file_field_tag ':file_name' %>
  </div>

  <div class="actions">
    <%= submit_tag 'Import File' %>
  </div>
<% end %>


    Stored Proc
    ---------------

    ALTER PROCEDURE "DBA"."my_enr_test"(file_name long varchar)
    BEGIN
        INSERT INTO DBA.pro_data_imports(file_name) values(file_name);
    END

在此先感谢..请帮助我。我想从上传按钮获取文件路径并存储到数据库列文件名中。如何执行提交按钮的存储过程。请帮我!!

4

2 回答 2

9

如果您使用的是 ActiveRecord SQLServer 适配器,请签出:

http://rubydoc.info/gems/activerecord-sqlserver-adapter/3.2.9/ActiveRecord/ConnectionAdapters/Sqlserver/DatabaseStatements:execute_procedure

在你的代码中做这样的事情

class Pro::DataImport < ActiveRecord::Base
  def self.update(user)
    self.execute_procedure("Stored Procedure Name", arg1, arg2)
  end
end

每个普通的 SQL 查询都会转换为要执行的存储过程。这就是 ActiveRecord 的 SQL Server 适配器的工作方式。所以你只需要担心数据库中定义的永久存储过程。

于 2012-09-19T14:40:05.337 回答
0
# PL/SQL records or object type parameters should be passed as Hash

p_employee = { :employee_id => 1, :first_name => 'First', :last_name => 'Last', :hire_date => Time.local(2000,01,31) }
 plsql.test_full_name(p_employee)

# test_full_name is procedure name in oracle
# p_employee holds parameter list 
#employee_id is first param defined in stored procedure
于 2015-11-10T15:11:26.200 回答