public override void RunCommand() { using (var fr = new FileInfo(AsmFile).OpenRead()) { var wrap = new AssemblyWrapper(fr.ReadAllBytes(), Path.GetFileNameWithoutExtension(AsmFile)); var fw = GetOutputStream(); var dmp = MsSqlDialect.Instance.CreateDumper(fw); if (!SkipDrop) { wrap.GenerateDrop(dmp); } wrap.GenerateCreate(dmp); if (!SkipRegister) { if (!SkipAggr) { wrap.GenerateRegisterAggr(dmp); } if (!SkipFunc) { wrap.GenerateRegisterFunc(dmp); } } } }
public void GenerateRegister(ISqlDumper dmp) { dmp.Put("^CREATE ^FUNCTION %i (", Attribute.Name ?? Function.Name); bool was = false; foreach (var arg in Function.GetParameters()) { if (was) { dmp.Put(", "); } dmp.Put("@%s %s", arg.Name, AssemblyWrapper.GetSqlType(arg.ParameterType)); was = true; } dmp.Put(") ^RETURNS %s", AssemblyWrapper.GetSqlType(Function.ReturnType)); dmp.Put(" ^EXTERNAL ^NAME %i.%i.%i", m_wrapper.m_name, Function.DeclaringType.FullName, Function.Name); dmp.EndCommand(); }