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); }
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); }
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); }