internal IColumnSourceMetadata TryGetTableVariable(string variableName) { if (cache_table_variables.TryGetValue(variableName, out TableVariableMetadata source_metadata)) { return(source_metadata); } TableVariableDeclarionVisitor vstor = new TableVariableDeclarionVisitor(variableName); BodyFragment.Accept(vstor); if (vstor.variableDefinition != null) { source_metadata = new TableVariableMetadata(vstor.variableDefinition); cache_table_variables.Add(variableName, source_metadata); return(source_metadata); } if (vstor.VariableDataType != null) { IColumnSourceMetadata udt_metadata = SchemaMetadata.TryGetUserDefinedTableTypeMetadata(vstor.VariableDataType.Name.SchemaIdentifier.Dequote(), vstor.VariableDataType.Name.BaseIdentifier.Dequote()); return(udt_metadata); } var prm = parameters.TryGetParameterType(vstor.VariableName); if (prm != null && prm.IsUserDefinedTableType) { IColumnSourceMetadata udt = SchemaMetadata.TryGetUserDefinedTableTypeMetadata(prm.UserDefinedTableTypeSchema, prm.UserDefinedTableTypeName); if (udt != null) { return(udt); } } //BodyFragment.Accept(new DumpFragmentVisitor(true)); throw new NotImplementedException(variableName); }
internal ColumnTypeMetadata TryGetScalarVariableType(string variableName) { var pt = parameters.TryGetParameterType(variableName); if (pt != null) { return(new ColumnTypeMetadata(pt.ColumnDbType, pt.AllowNull)); } // scan for variable declaration TableVariableDeclarionVisitor vstor = new TableVariableDeclarionVisitor(variableName); BodyFragment.Accept(vstor); if (vstor.variableDefinition != null) { throw new NotImplementedException(variableName); } if (vstor.VariableDataType != null) { var variableDbType = ProcedureGenerator.ResolveToDbDataType(vstor.VariableDataType); return(new ColumnTypeMetadata(variableDbType, true)); } //BodyFragment.Accept(new DumpFragmentVisitor(true)); throw new NotImplementedException(variableName); }