protected override void AppendTo(SqlStringBuilder builder)
        {
            var orReplace = ReplaceIfExists ? "OR REPLACE" : "";

            builder.AppendFormat("CREATE {0}FUNCTION ", orReplace);
            FunctionName.AppendTo(builder);

            builder.Append("(");
            if (Parameters != null && Parameters.Length > 0)
            {
                for (int i = 0; i < Parameters.Length; i++)
                {
                    Parameters[i].AppendTo(builder);

                    if (i < Parameters.Length - 1)
                    {
                        builder.Append(", ");
                    }
                }
            }

            builder.Append(")");

            builder.Append(" RETURN ");
            ReturnType.AppendTo(builder);
            builder.AppendLine(" IS");

            builder.Indent();

            Body.AppendTo(builder);

            builder.DeIndent();
        }