3

ROR初心者です。ビューの送信ボタンをクリックしたときに処理するストアド プロシージャを呼び出したい。

    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

前もって感謝します..私を助けてください. アップロード ボタンからファイル パスを取得し、データベース列 file_name に格納します。送信ボタンのストアプロシージャの実行方法。私を助けてください!!

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 に答える