我正在尝试手动执行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命令并获得所请求的数据,而不是得到一个“真”的响应?
发布于 2015-05-27 13:40:25
我用来执行自定义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过程、函数和数据库视图。
发布于 2016-03-31 01:31:19
对我来说,我不能让它返回一个哈希值。
results = ActiveRecord::Base.connection.execute(sql)
但是使用exec_query方法是可行的。
results = ActiveRecord::Base.connection.exec_query(sql)
发布于 2014-07-14 23:16:23
转发我们论坛上的答案,以帮助其他有类似问题的人:
@connection = ActiveRecord::Base.connection
result = @connection.exec_query('select tablename from system.tables')
result.each do |row|
puts row
end
https://stackoverflow.com/questions/22752777
复制相似问题