class Mkxms::Mssql::ClrAggregate

Constants

SQL_OBJECT_TYPE

Attributes

clr_impl[RW]
execute_as[RW]
name[RW]
returns[RW]
schema[RW]

Public Class Methods

new(attrs) click to toggle source
# File lib/mkxms/mssql/clr_aggregate_handler.rb, line 15
def initialize(attrs)
  @schema = attrs['schema']
  @name = attrs['name']
  @execute_as = attrs['execute-as']
end

Public Instance Methods

param_properties_sql() click to toggle source
# File lib/mkxms/mssql/clr_aggregate_handler.rb, line 46
def param_properties_sql
  params.map do |param|
    subitem_extended_properties_sql(param)
  end
end
procedure_def_sql() click to toggle source
# File lib/mkxms/mssql/clr_aggregate_handler.rb, line 28
def procedure_def_sql
  [[].tap do |lines|
    lines << "IF NOT EXISTS ("
    lines << "  SELECT * FROM xmigra.ignored_clr_assemblies asm"
    lines << "  WHERE asm.name = #{clr_impl.assembly.sql_quoted}"
    lines << ")"
    lines << "CREATE AGGREGATE [{filename}] ("
    lines << params.map do |param|
      "  #{param.name} #{param.type_spec}".tap do |param_spec|
        param_spec << " = #{param.default_value}" if param.default_value
      end
    end.join(",\n")
    lines << ")"
    lines << "RETURNS #{returns.type_spec}" if returns
    lines << "EXTERNAL NAME #{clr_impl.full_specifier};"
  end.join("\n")]
end
to_sql() click to toggle source
# File lib/mkxms/mssql/clr_aggregate_handler.rb, line 24
def to_sql
  (procedure_def_sql + extended_properties_sql + param_properties_sql)
end