Как создать подготовленный оператор вставки в Sequel?

Я пытаюсь создать подготовленный оператор insert в Sequel, и я настолько

db[:registration].prepare(:insert)
=> <Sequel::Mysql2::Dataset/PreparedStatement "INSERT INTO `registration` () VALUES ()">

Как создать заявление, похожее на следующее:

INSERT INTO `registration` (`name`, `email`) VALUES (?, ?)

Документация немного тупая, и я не могу найти примеры в Интернете.


person josh    schedule 14.09.2013    source источник


Ответы (1)


Выяснил это, глядя на их rspecs:

statement = db[:registration].prepare(:insert, :prepared_statement_name, :email => :$email, :name => :$name)
statement.call(:name => "foo", :email => "[email protected]")

ПРИМЕЧАНИЕ

Ключи, передаваемые в .call, соответствуют значениям, переданным в хэше в prepare. Так что это тоже сработает:

statement = db[:registration].prepare(:insert, :prepared_statement_name, :email => :$e, :name => :$n)
statement.call(:n => "foo", :e => "[email protected]")
person masahji    schedule 14.09.2013
comment
Не самый интуитивный способ выполнения подготовленных операторов (знаки $ просто неудобны), и в большинстве реализаций используется последовательность для сопоставления столбцов и значений. Однако вот полная документация: sequel.jeremyevans.net/rdoc/files/ документ/ - person aaron-coding; 02.05.2015