tutorial rails español ejemplos comandos caracteristicas sql ruby-on-rails-3 activerecord nuodb

español - ¿Cómo se ejecutan manualmente los comandos SQL en Ruby On Rails con NuoDB?



ruby tutorial (4)

El comando de trabajo que estoy usando para ejecutar sentencias SQL personalizadas es:

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

con "foo" siendo el enunciado sql (es decir, "SELECCIONAR * FROM tabla").

Este comando devolverá un conjunto de valores como un hash y los colocará en la variable de resultados.

Entonces en mis carriles application_controller.rb agregué esto:

def execute_statement(sql) results = ActiveRecord::Base.connection.execute(sql) if results.present? return results else return nil end end

El uso de execute_statement devolverá los registros encontrados y si no hay ninguno, devolverá nil.

De esta manera puedo simplemente llamarlo a cualquier lugar en la aplicación de rieles, como por ejemplo:

records = execute_statement("select * from table")

"execute_statement" también puede invocar procedimientos, funciones y también vistas de bases de datos de NuoDB.

Estoy intentando ejecutar comandos SQL manualmente para poder acceder a los procedimientos en NuoDB.

Estoy usando Ruby on Rails y estoy usando el siguiente comando:

ActiveRecord::Base.connection.execute("SQL query")

La "consulta SQL" podría ser cualquier comando SQL.

Como por ejemplo, tengo una tabla llamada "Comentarios" y cuando ejecuto el comando:

ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")

Esto solo devolvería una respuesta "verdadera" en lugar de enviarme todos los datos solicitados.

Este es el resultado en la consola de Rails es:

SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks` => true

Me gustaría utilizar esto para llamar a los procedimientos almacenados en NuoDB, pero al llamar a los procedimientos, esto también devolvería una respuesta "verdadera".

¿De todos modos puedo ejecutar comandos SQL y obtener los datos solicitados en lugar de obtener una respuesta "verdadera"?


Para mí, no pude hacer que esto devuelva un hash.

results = ActiveRecord::Base.connection.execute(sql)

Pero utilizando el método exec_query funcionó.

results = ActiveRecord::Base.connection.exec_query(sql)


Reposicionando la respuesta de nuestro foro para ayudar a otros con un problema similar:

@connection = ActiveRecord::Base.connection result = @connection.exec_query(''select tablename from system.tables'') result.each do |row| puts row end


res = ActiveRecord::Base.connection_pool.with_connection { |con| con.exec_query( "SELECT 1;" ) }

El código anterior es un ejemplo para

  1. ejecutando SQL arbitrario en su conexión de base de datos
  2. devolviendo la conexión de vuelta al grupo de conexiones después