简体   繁体   English

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

[英]how to call stored procedure in ruby on rails?

I am new to ROR. 我是ROR的新手。 I want to call the Stored Procedure to process when I click the submit button in the VIEW. 我想在单击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

Thanks in Advance.. Please Help me. 在此先感谢..请帮助我。 I want to get the filepath from the upload button and store into the database column file_name. 我想从上传按钮获取文件路径并存储到数据库列file_name中。 How to execute the store procedure for the submit button. 如何执行提交按钮的存储过程。 Please help me!! 请帮我!!

if you are using the ActiveRecord SQLServer Adapter, checkout: 如果您使用的是ActiveRecord SQLServer适配器,请检查:

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

do something like this in your code 在你的代码中做这样的事情

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

Every normal SQL query is converted to a stored procedure to be executed. 每个普通的SQL查询都转换为要执行的存储过程。 That is how the SQL Server adapter for ActiveRecord works. 这就是ActiveRecord的SQL Server适配器的工作方式。 So you only have to worry about this for permanent stored procedures defined in the database. 因此,您只需担心数据库中定义的永久存储过程。

# 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM