##概要
Rubyを使用して簡単にSQLServerのストアドを呼び出す。
##やりたいこと
Rubyを使用してSQLServerのストアド(usp_read_m_user)を使用してユーザーマスタを参照する。
m_userのテーブル構造
UserID | UserName |
---|---|
00000001 | 藤沼悟 |
00000002 | 雛月加代 |
##環境
- Windows 8.1
- Ruby 2.1.5p273
- SQLServer 2008R2
- activerecord-sqlserver-adapter (3.2.12)
- tiny_tds (0.6.1 x86-mingw32)
1.ストアド
ストアドプロシージャー
CREATE PROCEDURE [dbo].[usp_read_m_user]
@UserId nvarchar(10)
AS
BEGIN
SELECT * FROM m_user
WHERE UserID = @UserID;
END
2.GemFile
GemFile
source "https://rubygems.org"
gem 'activerecord-sqlserver-adapter', '3.2.12'
gem 'tiny_tds', '0.6.1'
3.database.yml
database.yml
development:
adapter: "sqlserver"
host: "ホスト名(端末名,IPアドレス等)"
username: "ユーザー名"
password: "パスワード"
database: "データベース名"
4.コントローラー
app.rb
# coding:utf-8
require 'activerecord-sqlserver-adapter'
require 'tiny_tds'
ActiveRecord::Base.configurations = YAML.load_file('database.yml')
ActiveRecord::Base.establish_connection(:development)
use ActiveRecord::ConnectionAdapters::ConnectionManagement
def readData
rtns = ActiveRecord::Base.execute_procedure :usp_read_m_user, UserId: '00000002'
rtns.each do |r|
r.each{|key,value|
puts key,value
}
end
end
####構文
ActiveRecord::Base.execute_procedure :ストアド名, パラメータ1, パラメータ2, パラメータ3
又は
ActiveRecord::Base.execute_procedure :ストアド名, named: パラメータ
5.実行結果