Pat*_*ung 125 sql activerecord ruby-on-rails-3 nuodb
我正在尝试手动执行SQL命令,以便我可以访问NuoDB中的过程.
我正在使用Ruby on Rails,我正在使用以下命令:
ActiveRecord::Base.connection.execute("SQL query")
Run Code Online (Sandbox Code Playgroud)
"SQL查询"可以是任何SQL命令.
例如,我有一个名为"反馈"的表,当我执行命令时:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
Run Code Online (Sandbox Code Playgroud)
这只会返回"真实"响应,而不是向我发送所有请求的数据.
这是Rails控制台上的输出是:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
Run Code Online (Sandbox Code Playgroud)
我想用它来调用NuoDB中的存储过程,但是在调用过程时,这也会返回一个"true"响应.
无论如何我是否可以执行SQL命令并获取请求的数据而不是获得"真实"的响应?
Pat*_*ung 148
我用来执行自定义SQL语句的工作命令是:
results = ActiveRecord::Base.connection.execute("foo")
Run Code Online (Sandbox Code Playgroud)
"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
Run Code Online (Sandbox Code Playgroud)
使用execute_statement将返回找到的记录,如果没有,则返回nil.
这样我就可以在rails应用程序的任何地方调用它,例如:
records = execute_statement("select * from table")
Run Code Online (Sandbox Code Playgroud)
"execute_statement"也可以调用NuoDB过程,函数和数据库视图.
Tim*_*ark 102
对我来说,我无法让它返回哈希值.
results = ActiveRecord::Base.connection.execute(sql)
Run Code Online (Sandbox Code Playgroud)
但是使用exec_query方法有效.
results = ActiveRecord::Base.connection.exec_query(sql)
Run Code Online (Sandbox Code Playgroud)
小智 23
从我们的论坛中重新发布答案,以帮助其他人处理类似问题:
@connection = ActiveRecord::Base.connection
result = @connection.exec_query('select tablename from system.tables')
result.each do |row|
puts row
end
Run Code Online (Sandbox Code Playgroud)
And*_*iep 18
res = ActiveRecord::Base.connection_pool.with_connection { |con| con.exec_query( "SELECT 1;" ) }
Run Code Online (Sandbox Code Playgroud)
上面的代码是一个例子
小智 13
获得 MySql::Result 对象后
results = ActiveRecord::Base.connection.execute(query)
Run Code Online (Sandbox Code Playgroud)
您可以将其转换为行数组
results.to_a
Run Code Online (Sandbox Code Playgroud)
将制作这种格式的数组
[[row1][row2]...]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
140802 次 |
最近记录: |