Method: SQLite3::Database#create_function
- Defined in:
- lib/sqlite3/database.rb
#create_function(name, arity, text_rep = Constants::TextRep::ANY, &block) ⇒ Object
Creates a new function for use in SQL statements. It will be added as
name, with the given arity. (For variable arity functions, use
-1 for the arity.)
The block should accept at least one parameter--the FunctionProxy instance that wraps this function invocation--and any other arguments it needs (up to its arity).
The block does not return a value directly. Instead, it will invoke
the FunctionProxy#result= method on the func parameter and
indicate the return value that way.
Example:
db.create_function( "maim", 1 ) do |func, value|
if value.nil?
func.result = nil
else
func.result = value.split(//).sort.join
end
end
puts db.get_first_value( "select maim(name) from table" )
319 320 321 322 323 324 325 326 |
# File 'lib/sqlite3/database.rb', line 319 def create_function name, arity, text_rep=Constants::TextRep::ANY, &block define_function(name) do |*args| fp = FunctionProxy.new block.call(fp, *args) fp.result end self end |