首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用NuoDB在Ruby On Rails中手动执行SQL命令

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

Stack Overflow用户
提问于 2014-03-31 10:35:26
回答 4查看 214.4K关注 0票数 170

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

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

代码语言:javascript
复制
ActiveRecord::Base.connection.execute("SQL query")

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

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

代码语言:javascript
复制
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")

这将只返回"true“响应,而不是向我发送所有请求的数据。

这是Rails控制台上的输出:

代码语言:javascript
复制
SQL (0.4ms)  SELECT `feedbacks`.* FROM `feedbacks`
 => true

我想用它来调用NuoDB中的存储过程,但是在调用这些过程时,它也会返回一个"true“响应。

有没有什么办法可以让我执行SQL命令并获得所请求的数据,而不是得到一个“真”的响应?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-27 13:40:25

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

代码语言:javascript
复制
results = ActiveRecord::Base.connection.execute("foo")

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

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

因此,在我的rails application_controller.rb上,我添加了以下内容:

代码语言:javascript
复制
def execute_statement(sql)
  results = ActiveRecord::Base.connection.execute(sql)

  if results.present?
    return results
  else
    return nil
  end
end

使用execute_statement将返回找到的记录,如果没有记录,则返回nil。

这样,我就可以在rails应用程序的任何地方调用它,例如:

代码语言:javascript
复制
records = execute_statement("select * from table")

"execute_statement“还可以调用NuoDB过程、函数和数据库视图。

票数 191
EN

Stack Overflow用户

发布于 2016-03-31 01:31:19

对我来说,我不能让它返回一个哈希值。

代码语言:javascript
复制
results = ActiveRecord::Base.connection.execute(sql)

但是使用exec_query方法是可行的。

代码语言:javascript
复制
results = ActiveRecord::Base.connection.exec_query(sql)
票数 153
EN

Stack Overflow用户

发布于 2014-07-14 23:16:23

转发我们论坛上的答案,以帮助其他有类似问题的人:

代码语言:javascript
复制
@connection = ActiveRecord::Base.connection
result = @connection.exec_query('select tablename from system.tables')
result.each do |row|
puts row
end
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22752777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档