Saya mencoba untuk secara manual menjalankan perintah SQL sehingga saya dapat mengakses prosedur di NuoDB.
Saya menggunakan Ruby on Rails dan saya menggunakan perintah berikut:
ActiveRecord::Base.connection.execute("SQL query")
"Permintaan SQL" bisa berupa perintah SQL apa saja.
Seperti misalnya saya memiliki tabel yang disebut "Umpan Balik" dan ketika saya menjalankan perintah:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
Ini hanya akan mengembalikan respons "benar" daripada mengirimi saya semua data yang diminta.
Ini adalah output di Rails Console adalah:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
Saya ingin menggunakan ini untuk memanggil prosedur tersimpan di NuoDB tetapi setelah memanggil prosedur, ini juga akan mengembalikan respons "benar".
Apakah ada cara untuk menjalankan perintah SQL dan mendapatkan data yang diminta alih-alih mendapatkan respons "benar"?
sumber
ActiveRecord::Base.connection.execute
. Bisakah Anda menunjukkan apa yang sebenarnya Anda ubah untuk mendapatkan data, bukan hanyatrue
?Bagi saya, saya tidak bisa mendapatkan ini untuk mengembalikan hash.
Tetapi menggunakan metode exec_query berhasil.
sumber
.exec_query
mengembalikanActiveRecord::Result
objek yang sangat berguna dengan atribut yang mudah diakses.columns
dan.rows
..execute
mengembalikan array hash yang biasanya lebih sulit untuk ditangani dan mungkin lebih berat di memori. Saya belum pernah menggunakanexec_query
, terima kasih atas tipnya..entries
ketika menggunakan.exec_query
untuk mendapatkan hasil sebagai array hash.Reposting jawaban dari forum kami untuk membantu orang lain dengan masalah yang sama:
sumber
Kode di atas adalah contoh untuk
sumber
ActiveRecord::Base.connection
tanpa meneleponActiveRecord::Base.clear_active_connections!
. Lihat api.rubyonrails.org/v5.2/classes/ActiveRecord/...