首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ROR 4中调用MySQL存储过程

在ROR 4中调用MySQL存储过程
EN

Stack Overflow用户
提问于 2015-08-11 11:13:53
回答 4查看 2.2K关注 0票数 2

没有几个例子,但其中没有非常明确(或在旧版本)。

我想调用MySQL过程并检查返回状态(在rails 4.2中)。我看到的最常见的方法是调用result = ActiveRecord::Base.connection.execute("call example_proc()"),但是在一些地方,人们编写了准备方法result = ActiveRecord::Base.connection.execute_procedure("Stored Procedure Name", arg1, arg2) (尽管它没有编译)。

那么,调用和获取MySQL过程状态的正确方法是什么呢?

编辑:

如何安全地发送参数,其中第一个参数是整数,第二个字符串和第三个布尔值?

EN

Stack Overflow用户

发布于 2015-08-11 18:29:03

通常,您应该能够在常规的whereselect方法中调用给定模型的存储过程:

代码语言:javascript
复制
YourModel.where("YOUR_PROC(?, ?)", var1, var2)

至于您的评论“我希望后面的过程验证是最正确的方法(对于警告和错误)”,我想这始终取决于您实际想要实现什么,以及您希望代码的可读性。

例如,如果您想返回YourModel属性的行,那么最好在where方法中使用上面的语句。另一方面,如果您编写了一些sql适配器,那么您可能希望降低到ActiveRecord::Base.connection.execute级别。

顺便说一句,这里应该提到一些关于存储proc性能的内容。在几个数据库中,数据库在存储proc的第一次运行时进行存储proc优化。但是,传递给第一次运行的参数可能是而不是,而不是稍后将更频繁地在其上运行的参数。因此,对于您的情况,存储的proc可能会以“无最优”的方式进行自动优化。这种情况可能会发生,也可能不会发生,但在使用带有动态参数的存储过程时,您应该考虑这一点。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31940268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档