У меня есть этот подготовленный оператор в Rails (postgres db):
conn = ActiveRecord::Base.connection.raw_connection
conn.prepare('query_fetch_dest_values',
"SELECT q.entity AS source_entity,
q.financial_institution AS source_financial_institution,
q.account_number AS source_account_number,
a2.entity AS destination_entity,
a2.financial_institution AS destination_financial_institution,
a2.account_number AS destination_account_number
FROM
(SELECT *
FROM forecast_entry_and_cash_positions
INNER JOIN accounts a ON forecast_entry_and_cash_positions.source_account_id = a.account_number
WHERE (input_type IN ($1) AND
a.financial_institution IN ($2) AND
forecast_entry_and_cash_positions.source_account_id IN ($3))
)q LEFT JOIN accounts a2 ON q.dest_account_id = a2.account_number")
search_destination_values =
conn.exec_prepared('query_fetch_dest_values',
[decode_input_type(params[:search_input_type]),
params[:search_source_financial_institution],
params[:search_source_account_number]
])
puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
puts search_destination_values.inspect
- Вышеуказанный SQL не печатается на моей консоли. Итак, как мне узнать, выполняется мой запрос или нет?
- В
inspect
, как показано в приведенном выше коде, это то, что выводится на консоль:
#<PG::Result:0x00007f9d32c528b8 status=PGRES_TUPLES_OK ntuples=0 nfields=6 cmd_tuples=0>
Я узнал из этого блога - https://blog.kiprosh.com/understanding-pg-result-object/, что nTuples=0
и cmd_tuples=0
в приведенном выше выводе означают, что число записей, возвращаемых SQL, равно 0.
Мой запрос в pgadmin возвращает 3 записи - почему я не получаю вывод здесь?
В этой документации
https://rubydoc.info/gems/pg/PG/Connection#exec_prepared -instance_method и блогах stackoverflow, подобных этому ->
Подготовленный оператор для Postgresql в Rails , показано, как передавать значения динамических c для фильтров, когда условие фильтрации - это условие
=
(равно) для фильтруемых столбцов.
Однако в моем состоянии у меня есть 3 IN
фильтров. В документации не приведен пример прохождения динамических c фильтров для предложений IN
. В приведенном выше фрагменте кода правильно ли я передаю фильтры Dynami c для моих предложений 3 IN
? (Опять же, поскольку мой запрос не печатается на моей консоли, я не могу проверить, правильно ли мои фильтры добавлены в SQL или нет).