我试图手动执行SQL命令,这样我就可以访问NuoDB中的过程。
我正在使用Ruby on Rails,我正在使用以下命令:
ActiveRecord::Base.connection.execute("SQL query")
“SQL查询”可以是任何SQL命令。
例如,我有一个名为“反馈”的表,当我执行命令时:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
这只会返回一个“true”响应,而不是发送我所请求的所有数据。
这是在Rails控制台上的输出:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
我想用它来调用NuoDB中的存储过程,但在调用过程时,这也将返回一个“true”响应。
是否有任何方法我可以执行SQL命令,并获得所请求的数据,而不是得到一个“真实”的响应?
我用来执行自定义SQL语句的工作命令是:
results = ActiveRecord::Base.connection.execute("foo")
“foo”是SQL语句(即。"SELECT * FROM table")。
该命令将返回一组值作为散列,并将它们放入results变量中。
在我的rails上,application_controller。rb我添加了这个:
def execute_statement(sql)
results = ActiveRecord::Base.connection.execute(sql)
if results.present?
return results
else
return nil
end
end
使用execute_statement将返回找到的记录,如果没有,则返回nil。
这样我就可以在rails应用程序的任何地方调用它,例如:
records = execute_statement("select * from table")
"execute_statement"也可以调用NuoDB过程、函数和数据库视图。