'How do you manually execute SQL commands in Ruby On Rails using NuoDB
I'm trying to manually execute SQL commands so I can access procedures in NuoDB.
I'm using Ruby on Rails and I'm using the following command:
ActiveRecord::Base.connection.execute("SQL query")
The "SQL query" could be any SQL command.
For example, I have a table called "Feedback" and when I execute the command:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
This would only return a "true" response instead of sending me all the data requested.
This is the output on the Rails Console is:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
I would like to use this to call stored procedures in NuoDB but upon calling the procedures, this would also return a "true" response.
Is there any way I can execute SQL commands and get the data requested instead of getting a "true" response?
Solution 1:[1]
For me, I couldn't get this to return a hash.
results = ActiveRecord::Base.connection.execute(sql)
But using the exec_query method worked.
results = ActiveRecord::Base.connection.exec_query(sql)
Solution 2:[2]
Reposting the answer from our forum to help others with a similar issue:
@connection = ActiveRecord::Base.connection
result = @connection.exec_query('select tablename from system.tables')
result.each do |row|
puts row
end
Solution 3:[3]
res = ActiveRecord::Base.connection_pool.with_connection { |con| con.exec_query( "SELECT 1;" ) }
The above code is an example for
- executing arbitrary SQL on your database-connection
- returning the connection back to the connection pool afterwards
Solution 4:[4]
Once you get the MySql::Result object
results = ActiveRecord::Base.connection.execute(query)
You can convert it to array of rows
results.to_a
will make array of this format
[[row1][row2]...]
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Tim Park |
| Solution 2 | nobody |
| Solution 3 | Andreas Rayo Kniep |
| Solution 4 | Harsh Kumar |
