有很少的例子,但是没有非常明确(或旧版本)。
我想调用MySQL程序并检查返回状态(在rails 4.2
中)。我看到的最常见的方法是调用result = ActiveRecord::Base.connection.execute("call example_proc()")
,但是在某些地方,人们写的是准备好的方法result = ActiveRecord::Base.connection.execute_procedure("Stored Procedure Name", arg1, arg2)
(但它没有编译)。
那么调用和获取MySQL程序状态的正确方法是什么?
编辑:
如何安全地发送参数,第一个参数是整数,第二个字符串和第三个布尔值?
答案 0 :(得分:1)
Rails 4 ActiveRecord::Base
不支持execute_procedure
方法,但result = ActiveRecord::Base.connection
仍有效。即
result = ActiveRecord::Base.connection.execute("call example_proc('#{arg1}','#{arg2}')")
答案 1 :(得分:1)
您可以尝试下面的Vishnu方法
或
您也可以尝试
ActiveRecord::Base.connections.exec_query("call example_proc('#{arg1}','#{arg2}')")
答案 2 :(得分:0)
通常,您应该能够针对给定模型以常规where
或select
方法调用存储过程:
YourModel.where("YOUR_PROC(?, ?)", var1, var2)
关于你的评论"底线我想要事后最正确的方法验证(警告和错误)",我想它总是取决于你实际想要实现的内容以及你的可读性想要你的代码。
例如,如果要返回YourModel属性的行,那么如果将上述语句与where
方法一起使用可能会更好。另一方面,如果您编写了一些sql适配器,那么您可能需要转到ActiveRecord :: Base.connection.execute级别。