J'essaie d'exécuter manuellement des commandes SQL pour pouvoir accéder aux procédures dans NuoDB.
J'utilise Ruby on Rails et j'utilise la commande suivante:
ActiveRecord::Base.connection.execute("SQL query")
La "requête SQL" peut être n'importe quelle commande SQL.
Comme par exemple j'ai une table appelée "Feedback" et quand j'exécute la commande:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
Cela ne renverrait qu'une "vraie" réponse au lieu de m'envoyer toutes les données demandées.
Voici le résultat de la console Rails:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
Je voudrais utiliser ceci pour appeler des procédures stockées dans NuoDB mais en appelant les procédures, cela renverrait également une réponse "vraie".
Est-il possible d'exécuter des commandes SQL et d'obtenir les données demandées au lieu d'obtenir une réponse "vraie"?
la source
ActiveRecord::Base.connection.execute
. Pourriez-vous s'il vous plaît indiquer ce que vous avez exactement changé pour obtenir les données au lieu de simplementtrue
?Pour moi, je ne pouvais pas obtenir cela pour renvoyer un hachage.
Mais utiliser la méthode exec_query a fonctionné.
la source
.exec_query
renvoie unActiveRecord::Result
objet très pratique avec des attributs.columns
et facilement accessibles.rows
..execute
renvoie un tableau de hachages qui est généralement plus difficile à gérer et probablement plus lourd en mémoire. Je ne l'avais jamais utiliséexec_query
, merci pour le tuyau..entries
lors de l'utilisation.exec_query
pour obtenir les résultats sous forme de tableau de hachages.Republier la réponse de notre forum pour aider les autres à résoudre un problème similaire:
la source
Le code ci-dessus est un exemple pour
la source
ActiveRecord::Base.connection
sans appelerActiveRecord::Base.clear_active_connections!
. Voir api.rubyonrails.org/v5.2/classes/ActiveRecord/...