Class: Sequel::Dataset
- Inherits:
-
Object
- Object
- Sequel::Dataset
- Defined in:
- lib/sequel/oracle_extensions/merge.rb
Defined Under Namespace
Modules: MergeBlockCopy
Constant Summary collapse
- MERGE_CLAUSE_METHODS =
clause_methods(:merge, %w'target source join update delete insert')
Instance Method Summary collapse
- #merge(&block) ⇒ Object
- #merge_into(*values, &block) ⇒ Object
- #merge_into_sql(into, on, *values, &block) ⇒ Object
- #merge_sql(*values, &block) ⇒ Object
- #merge_using(*values, &block) ⇒ Object
- #merge_using_sql(using, *values, &block) ⇒ Object
Instance Method Details
#merge(&block) ⇒ Object
8 9 10 |
# File 'lib/sequel/oracle_extensions/merge.rb', line 8 def merge(&block) execute_dui merge_sql(&block) end |
#merge_into(*values, &block) ⇒ Object
16 17 18 |
# File 'lib/sequel/oracle_extensions/merge.rb', line 16 def merge_into(*values, &block) execute_dui merge_into_sql(*values, &block) end |
#merge_into_sql(into, on, *values, &block) ⇒ Object
42 43 44 |
# File 'lib/sequel/oracle_extensions/merge.rb', line 42 def merge_into_sql(into, on, *values, &block) merge_sql into, self, on, *values, &block end |
#merge_sql(*values, &block) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/sequel/oracle_extensions/merge.rb', line 20 def merge_sql(*values, &block) ms = clone ms.opts = { :into=>values.shift, :using=>values.shift, :on=>[values.shift].compact } [:update, :insert, :delete].each{|k| ms.opts[k] = values.shift } ms.opts.update :defaults=>@opts[:defaults], :overrides=>@opts[:overrides] if block_given? ms.extend(MergeBlockCopy) ms.instance_eval(&block) ms = ms.clone(ms.opts) end ms.opts[:into] ||= @opts[:from].first ms.opts[:on] << @opts[:where] if @opts[:where] ms.send :_merge_sql end |
#merge_using(*values, &block) ⇒ Object
12 13 14 |
# File 'lib/sequel/oracle_extensions/merge.rb', line 12 def merge_using(*values, &block) execute_dui merge_using_sql(*values, &block) end |
#merge_using_sql(using, *values, &block) ⇒ Object
38 39 40 |
# File 'lib/sequel/oracle_extensions/merge.rb', line 38 def merge_using_sql(using, *values, &block) merge_sql @opts[:from].first, using, *values, &block end |