Beispiel #1
0
 private string GetSqlReturnType()
 {
     if (_functiondef.TableDefinition.IsEmpty())
     {
         return(QueryGeneratorHelper.GetSqlType(_info.ReturnType, _schema));
     }
     return(" TABLE ( \r\n" + _functiondef.TableDefinition + "\r\n)");
 }
Beispiel #2
0
        public override string GetCreateScript()
        {
            var          assemblyname = "[" + _type.Assembly.GetName().Name + "]";
            var          name         = _schema + "." + GetObjectName();
            var          args         = GetArguments(_type.GetMethod("Accumulate"));
            var          rettype      = QueryGeneratorHelper.GetSqlType(_type.GetMethod("Terminate").ReturnType, _schema);
            var          classname    = GetClassFullName();
            const string pattern      = @"
--SQLINSTALL: CREATE AGGREGATE {0} ({3}.{4})
CREATE AGGREGATE {0} ({1})
RETURNS {2}
EXTERNAL NAME {3}.{4}";

            return(string.Format(pattern, name, args, rettype, assemblyname, classname));
        }
        /// <summary>
        /// </summary>
        /// <returns> </returns>
        protected string GetArguments(MethodInfo method = null)
        {
            var args = new List <string>();

            foreach (var parameterInfo in (method ?? _info).GetParameters())
            {
                var type = QueryGeneratorHelper.GetSqlType(parameterInfo.ParameterType, _schema);
                var def  = " = null";
                if (type.Contains("max") || type == "xml" || type == "geography" || type == "geometry")
                {
                    def = "";
                }
                args.Add(string.Format("@{0} {1}{2}", parameterInfo.Name,
                                       type, def));
            }
            return(string.Join(",", args.ToArray()));
        }