Пример #1
0
        public override TableName[] GetProcedureNames(DatabaseName dname)
        {
            var table = dname.FillDataTable($"USE [{dname.Name}]; SELECT ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES");

            var L = table.AsEnumerable().Select(row => new
            {
                type   = row.Field <string>("ROUTINE_TYPE"),
                schema = row.Field <string>("ROUTINE_SCHEMA"),
                name   = row.Field <string>("ROUTINE_NAME")
            })
                    .Where(row => !(row.name.StartsWith("sp_") || row.name.StartsWith("fn_")))              //System Procedure or Function
                    .OrderByDescending(row => row.type)                                                     // Sort: Procedure, Function
                    .ThenBy(row => row.name)
                    .ToList();

            List <TableName> list = new List <TableName>();

            foreach (var row in L)
            {
                TableNameType type = TableNameType.Table;

                switch (row.type)
                {
                case "PROCEDURE":
                    type = TableNameType.Procedure;
                    break;

                case "FUNCTION":
                    type = TableNameType.Function;
                    break;
                }

                TableName tname = new TableName(dname, row.schema, row.name)
                {
                    Type = type
                };

                list.Add(tname);
            }

            return(list.ToArray());
        }
Пример #2
0
        public override TableName[] GetProcedureNames(DatabaseName dname)
        {
            var table = dname.FillDataTable($"USE [{dname.Name}]; SELECT ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES");

            List <TableName> list = new List <TableName>();

            foreach (DataRow row in table.Rows)
            {
                string        type   = row.Field <string>("ROUTINE_TYPE");
                string        schema = row.Field <string>("ROUTINE_SCHEMA");
                string        name   = row.Field <string>("ROUTINE_NAME");
                TableNameType _type  = TableNameType.Table;

                //System Procedure or Function
                if (name.StartsWith("sp_") || name.StartsWith("fn_"))
                {
                    continue;
                }

                switch (type)
                {
                case "PROCEDURE":
                    _type = TableNameType.Procedure;
                    break;

                case "FUNCTION":
                    _type = TableNameType.Function;
                    break;
                }

                TableName tname = new TableName(dname, schema, name)
                {
                    Type = _type
                };

                list.Add(tname);
            }

            return(list.ToArray());
        }