Ejemplo n.º 1
0
        internal Udf(Table table, FunctionArgument[] arguments)
            : this(null)
        {
            Build = (buildContext, buildArgs) =>
            {
                if (arguments == null)
                {
                    arguments = new FunctionArgument[] { Designer.Null };
                }

                foreach (var argument in arguments)
                {
                    if (!argument.IsNullReference() && argument.Original is View)
                    {
                        var arg = ((View)argument.Original).Parameterize(buildContext);
                        argument.SetStringBuildMethod(arg);
                        argument.SetArgType(arg);
                    }
                }

                var sql = Text.GenerateSql(50)
                          .Append(table.Build(buildContext, buildArgs))
                          .Append(Text.LeftBracket)
                          .Append(FunctionArgument.Concatenate(arguments, buildContext, buildArgs))
                          .Append(Text.RightBracket)
                          .ToString();

                TryThrow(buildContext);

                return(sql);
            };
        }