sql - 如何使用 NuoDB 在 Ruby On Rails 中手动执行 SQL 命令

标签 sql ruby-on-rails activerecord nuodb

我正在尝试手动执行 SQL 命令,以便可以访问 NuoDB 中的过程。

我正在使用 Ruby on Rails,并且使用以下命令:

ActiveRecord::Base.connection.execute("SQL query")

“SQL 查询”可以是任何 SQL 命令。

例如,我有一个名为“Feedback”的表,当我执行命令时:

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”)。

此命令将以散列形式返回一组值并将它们放入结果变量中。

因此,在我的 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过程、函数以及数据库 View 。

关于sql - 如何使用 NuoDB 在 Ruby On Rails 中手动执行 SQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752777/

相关文章:

sql - Derby - 约束

ruby-on-rails - 在 JSON 响应中返回 CSRF token

sql - 表单中的必填字段现在必须设为可选,新字段成为必填字段,同时与原始字段具有可选关系

php - 代码点火器。如何返回变量值大于数据库中字段的记录?

mysql - 了解 Rails 中与 ActiveRecord 的关系

php - 过滤数据库并删除重复项

java - java中如何查找字符串

ruby-on-rails - 带有 link_to 的绝对 URL...Ruby on Rails

ruby-on-rails - rails 。选择文件夹而不是文件字段标签

sql - 使用单个 .sql 脚本文件创建多个表