Как вручную выполнить команды SQL в Ruby On Rails с помощью NuoDB
Я пытаюсь вручную выполнить команды SQL, чтобы я мог получить доступ к процедурам в NuoDB.
Я использую Ruby on Rails и я использую следующую команду:
ActiveRecord::Base.connection.execute("SQL query")
"SQL-запрос" может быть любой командой SQL.
например у меня есть таблица под названием "Обратная связь" и когда я выполните команду:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
Это только вернет "истинный" ответ вместо отправки мне всех запрошенных данных.
это выход на Рельсы консоли это:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
Я хотел бы использовать это для вызова хранимых процедур в NuoDB, но при вызове процедур это также вернет "истинный" ответ.
есть ли в любом случае я могу выполнить команды SQL и получить запрошенные данные вместо получения "истинного" ответа?
4 ответов:
рабочая команда, которую я использую для выполнения пользовательских инструкций SQL:
results = ActiveRecord::Base.connection.execute("foo")С "foo", являющимся оператором sql( т. е."SELECT * FROM table").
эта команда возвращает набор значений в виде хэша и помещает их в переменную результатов.
Так что на моих рельсах 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.
для меня, я не мог получить это, чтобы возвратить хэш.
results = ActiveRecord::Base.connection.execute(sql)но использование метода exec_query сработало.
results = ActiveRecord::Base.connection.exec_query(sql)
повторная публикация ответа с нашего форума, чтобы помочь другим с аналогичной проблемой:
@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;" ) }приведенный выше код является примером для
- выполнение произвольного SQL на вашей базе данных-соединение
- возврат соединения обратно в пул соединений после этого
Comments