我正在尝试手动执行 SQL 命令,以便可以访问 NuoDB 中的过程。
我正在使用 Ruby on Rails,并且正在使用以下命令:
ActiveRecord::Base.connection.execute("SQL query")
“SQL 查询”可以是任何 SQL 命令。
例如,我有一个名为“Feedback”的表,当我执行命令时:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
这只会返回“真实”响应,而不是向我发送请求的所有数据。
这是 Rails 控制台上的输出:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks` => true
我想用它来调用 NuoDB 中的存储过程,但是在调用过程时,这也会返回一个“真实”的响应。
有什么方法可以执行 SQL 命令并获取请求的数据而不是获得“真实”响应?
我用来执行自定义 SQL 语句的工作命令是:
results = ActiveRecord::Base.connection.execute("foo")
其中“foo”是 sql 语句(即“SELECT * FROM table”)。
该命令将返回一组值作为哈希并将它们放入结果变量中。
所以在我的 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 过程、函数,也可以调用数据库视图。