一尘不染

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

sql

我正在尝试手动执行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命令并获取请求的数据,而不是获得“真实”响应吗?


阅读 142

收藏
2021-03-17

共1个答案

一尘不染

我用来执行自定义SQL语句的有效命令是:

results = ActiveRecord::Base.connection.execute("foo")

其中“ foo”是sql语句(即“ SELECT * FROM table”)。

此命令将返回一组值作为哈希值,并将它们放入结果变量中。

因此,在我的应用程序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过程,函数以及数据库视图。

2021-03-17