繁体   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