September 25, 2006


[Rails 筆記] 如何使用 Stored Procedure (MySQL)以文找文

儘管 Rails 的原始作者之一 David Heinemeier 對 Database 的 Stored Procedure 並不太感興趣,都有了 Active Record 了,何需 Stored Procedure,不過需求總是存在的,要改好像也不太難,這篇筆記都是參考自 - MySQL stored procedures with Ruby 以及 StoredProceduresInMySql。這各式兩種作法,一種是改 Rails 原本的程式碼,另外一種則是改自己的程式碼 ,各有優缺點。

先看改 Rails 的方法:
(1) 找到 Rails 中的 mysql_adapter.rb 檔,他通常位於:
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb
(2) 修改底下這行:
ConnectionAdapters::MysqlAdapter.new( mysql, logger, [host, username, password, database, port, socket], config)
把它改成:
ConnectionAdapters::MysqlAdapter.new( mysql, logger, [host, username, password, database, port, socket, Mysql::CLIENT_MULTI_RESULTS], config)

(3) 新增加一個 function:

def select_sp(sql, name = nil)
 rows = select(sql, name = nil)
 while (@connection.more_results?())
  @connection.next_result()
 end
 return rows
end


(4) 使用上,如下例:

connection.select_sp ("CALL my_stored_proc();")


如果妳不想改 code,就不能用 Rails 的 adapter ,而是要自己 connect。



Posted by at 天空部落 │18:22 │回應(0)引用(0)Programming
相關閱讀

引用URL

http://blog.yam.com/syshen/trackback/6482125
回應文章