Próbuję ręcznie wykonywać polecenia SQL, aby uzyskać dostęp do procedur w NuoDB.
Używam Ruby on Rails i używam następującego polecenia:
ActiveRecord::Base.connection.execute("SQL query")
„Zapytaniem SQL” może być dowolne polecenie SQL.
Na przykład mam tabelę o nazwie „Feedback” i kiedy wykonuję polecenie:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
Spowoduje to tylko zwrócenie „prawdziwej” odpowiedzi zamiast przesłania mi wszystkich żądanych danych.
Oto wynik na konsoli Railsów:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
Chciałbym użyć tego do wywołania procedur składowanych w NuoDB, ale po wywołaniu procedur zwróci to również „prawdziwą” odpowiedź.
Czy mimo wszystko mogę wykonywać polecenia SQL i uzyskać żądane dane zamiast „prawdziwej” odpowiedzi?
źródło
ActiveRecord::Base.connection.execute
. Czy mógłbyś wskazać, co dokładnie zmieniłeś, aby uzyskać dane, a nie tylkotrue
?Dla mnie nie mogłem uzyskać tego, aby zwrócić hash.
Ale użycie metody exec_query zadziałało.
źródło
.exec_query
zwracaActiveRecord::Result
obiekt, który jest bardzo wygodny z łatwo dostępnymi.columns
i.rows
atrybutami..execute
zwraca tablicę skrótów, z którymi jest zwykle trudniejszy i prawdopodobnie bardziej obciąża pamięć. Nigdy nie korzystałemexec_query
, dzięki za wskazówkę..entries
,.exec_query
aby uzyskać wyniki jako tablicę skrótów.Ponowne opublikowanie odpowiedzi z naszego forum, aby pomóc innym w podobnym problemie:
źródło
Powyższy kod jest przykładem dla
źródło
ActiveRecord::Base.connection
bez wywoływaniaActiveRecord::Base.clear_active_connections!
. Zobacz api.rubyonrails.org/v5.2/classes/ActiveRecord/...