如何在rails上的ruby中调用存储过程?

我是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 ----------  
Browse the file to upload:
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

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

如果您使用的是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适配器的工作方式。 因此,您只需要担心数据库中定义的永久存储过程。

 # 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