Esempio n. 1
0
        private List <ProcedureParameter> GetStoredProcedureParameters(TSqlProcedure proc)
        {
            var result = new List <ProcedureParameter>();

            foreach (var parameter in proc.Parameters)
            {
                var newParameter = new ProcedureParameter()
                {
                    Length    = parameter.Length,
                    Name      = parameter.Name.Parts[2].Trim('@'),
                    Output    = parameter.IsOutput,
                    Precision = parameter.Precision,
                    Scale     = parameter.Scale,
                    StoreType = parameter.DataType.First().Name.Parts[0],
                    Nullable  = true,
                    //TypeName = parameter.ObjectType.Name,
                };

                result.Add(newParameter);
            }

            // Add parameter to hold the standard return value
            result.Add(new ProcedureParameter()
            {
                Name      = "returnValue",
                StoreType = "int",
                Output    = true,
                Nullable  = false,
            });

            return(result);
        }
Esempio n. 2
0
        private List <ProcedureResultElement> GetStoredProcedureResultElements(TSqlProcedure proc)
        {
            var result   = new List <ProcedureResultElement>();
            var metaProc = new SqlSharpener.Model.Procedure(proc.Element);

            if (metaProc.Selects == null || metaProc.Selects.Count() == 0)
            {
                return(result);
            }

            int ordinal = 0;

            foreach (var column in metaProc.Selects.FirstOrDefault()?.Columns)
            {
                result.Add(new ProcedureResultElement
                {
                    Name      = column.Name,
                    Nullable  = column.IsNullable,
                    StoreType = column.DataTypes[SqlSharpener.TypeFormat.SqlServerDbType],
                    Ordinal   = ordinal++,
                });
            }

            return(result);
        }
Esempio n. 3
0
        public ProcedureBuilder(string testSchema, string testName, TSqlProcedure procedureUnderTest)
        {
            CodeType = CodeType.Procedure;
            _testProcedure.StatementList = new StatementList();
            foreach (var t in procedureUnderTest.BodyDependencies)
            {
                if (t.ObjectType == ModelSchema.Table)
                {
                    //table to fake
                    var table = new TSqlTable(t.Element);
                    AddTable(table.Name);
                }
            }

            foreach (var p in procedureUnderTest.Parameters)
            {
                AddParameter(p.Name.GetName().UnQuote(), GetParameterType(p.DataType));
            }

            CreateTestProcedureDefinition(testSchema, testName);
            CreateExecForProcUnderTest(procedureUnderTest.Name);
        }