簡體   English   中英

通過activerecord-sqlserver-adapter連接到SQL Server 2005時從Rails執行SQL查詢

[英]Execute SQL query from Rails when connecting to SQL Server 2005 through activerecord-sqlserver-adapter

因此,我要通過activerecord-sqlserver-adapter從我的Rails應用程序連接到SQL Server 2005。

我可以通過執行存儲的過程

Mymodel.execute_procedure("thisProcedure", param1, param2)

但是我有一個存儲過程,其中包含我遇到問題的SQL INOUT變量。 我執行它,但沒有看到該變量返回。

所以現在我試圖只執行一些原始sql,例如

declare @thisVar int
EXEC thatProcedure 1, 1, @thisVar = @thisVar output
print @thisVar

當我做

sql = "declare @thisVar int
EXEC thatProcedure 1, 1, @thisVar = @thisVar output
print @thisVar"

foo = Mymodel.connection.execute(sql)

我沒有收到任何錯誤,一切看起來都很成功。 我回來了foo,它具有DBI :: StatementHandle類。 我實際上如何查看來自SQL的響應?

提前致謝!

自從涉足DBI以來已經有一段時間了,我們離開了存儲過程,轉而支持ORM。 要從StatementHandle對象獲取數據,您需要發出全部獲取指令。 那應該具有所有返回值/輸出參數以及結果集(如果適用於數組)。 這是dbi版本.4.1,我認為這是可與sqlserver適配器一起使用的最新版本。

sql = "declare @thisVar int
EXEC thatProcedure 1, 1, @thisVar = @thisVar output
print @thisVar"

foo = Mymodel.connection.execute(sql)

result_array = foo.fetch_all

然后您可以遍歷結果數組。

這是DBI文檔http://ruby-dbi.rubyforge.org/rdoc/index.html

您可能還需要查看新的activerecord-sqlserver-adapter。 它完全消除了DBI,盡管不確定如何處理SP。

http://github.com/rails-sqlserver/2000-2005-adapter

就其價值而言,我的建議是,將ORM與存儲過程混合在一起非常困難,因為您將業務邏輯划分為兩層,並且管理起來變得越來越困難。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM