簡體   English   中英

如何在插入語句中使用Sequel SQL函數?

[英]How can I use a Sequel SQL function in an insert statement?

在將新值插入數據集中時,我想使用SQL函數。 但是,我一直在收到TypeError: can't convert Sequel::SQL::Function into String錯誤。 Sequel文檔解釋了如何使用函數進行選擇,而不是插入。

理想情況下,我想避免DB.run因為我正在動態插入並且原始SQL混亂DB.run靈活。

這就是我想要做的:

INSERT INTO dataset (col1, col2, col3) VALUES ('something', 3, func(value))

這就是我在《續集》中所擁有的:

x = 'something'
y = 3
func_value = Sequel.function(:func, value)
DB[:dataset].insert (:col1 => x, :col2 => y, :col3 => func_value)

這可能嗎? 如果是這樣,我想念什么?

弄清楚了。 創建一個Sequel :: function對象,然后使其成為哈希中的值。

irb(main):028:0> tbl
=> #<Sequel::MySQL::Dataset: "SELECT * FROM `foo`.`bar`">
irb(main):029:0> uhex = Sequel.function(:unhex,7)
=> #<Sequel::SQL::Function @args=>[7], @f=>:unhex>
irb(main):030:0>  tbl.insert_sql( {:field_name => uhex })
=> "INSERT INTO `foo`.`bar` (`field_name`) VALUES (unhex(7))"

看起來在語法上有幾種不同的方法可以在Sequel中調用SQL函數: http : //sequel.rubyforge.org/rdoc/files/doc/dataset_filtering_rdoc.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM