Как использовать хранимые процедуры с Sequel

0

Я пытаюсь использовать процедуру магазина из ruby, с Sequel gem; но он продолжает бросать мне Mysql2 :: Error: команды не синхронизированы; вы не можете запустить эту команду сейчас после запуска хранимой процедуры, не можете найти что-либо о запросе нескольких операторов в документах:

MyModel.db['CALL get_info("arg")').first
# => {col: val, col2: val}
MyModel.db['CALL get_info("arg")').first
# => Sequel::DatabaseDisconnectError: Mysql2::Error: Commands out of sync; you can't run this command now
from /usr/local/lib/ruby/gems/2.3.0/gems/mysql2-0.4.5/lib/mysql2/client.rb:120:in '_query'
Теги:
sequel

1 ответ

0

С помощью создателя Sequel gem я придумал решение, похоже, что Sequel не поддерживает такой тип возврата, поэтому необходимо использовать драйвер mysql2:

res = nil
Domain.db.synchronize do |conn|
  res = conn.query("CALL sp_panel_info('#{self.code}')")

  while conn.next_result
    conn.store_result
  end
end
row = res.first

В этом случае я точно знаю, что моя процедура вернет одну строку, поэтому я получаю только первую.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню