public void OrdinalParameter(int position) { var paramSpec = new PositionalParameterSpecification(1, position, positionalParameterCount++); var parameter = Parameter.Placeholder; parameter.BackTrack = paramSpec.GetIdsForBackTrack(factory).First(); parametersSpecifications.Add(paramSpec); result.Add(parameter); }
IASTNode GeneratePositionalParameter(IASTNode inputNode) { if (_namedParameters.Count > 0) { throw new SemanticException("cannot define positional parameter after any named parameters have been defined"); } ParameterNode parameter = (ParameterNode)adaptor.Create(PARAM, "?"); PositionalParameterSpecification paramSpec = new PositionalParameterSpecification( inputNode.Line, inputNode.CharPositionInLine, _positionalParameterCount++ ); parameter.HqlParameterSpecification = paramSpec; _parameters.Add(paramSpec); return(parameter); }
private IEnumerable <IParameterSpecification> CreateParameterSpecificationsAndAssignBackTrack(IEnumerable <Parameter> sqlPatameters) { var specifications = new List <IParameterSpecification>(); int position = 0; var parameters = sqlPatameters.ToArray(); for (var sqlParameterPos = 0; sqlParameterPos < parameters.Length;) { var specification = new PositionalParameterSpecification(1, 0, position++) { ExpectedType = UniqueKeyType }; var paramTrackers = specification.GetIdsForBackTrack(Factory); foreach (var paramTracker in paramTrackers) { parameters[sqlParameterPos++].BackTrack = paramTracker; } specifications.Add(specification); } return(specifications); }
protected virtual IEnumerable <IParameterSpecification> CreateParameterSpecificationsAndAssignBackTrack(IEnumerable <Parameter> sqlPatameters) { // This implementation can manage even the case of batch-loading var specifications = new List <IParameterSpecification>(); int position = 0; var parameters = sqlPatameters.ToArray(); for (var sqlParameterPos = 0; sqlParameterPos < parameters.Length;) { var specification = new PositionalParameterSpecification(1, 0, position++) { ExpectedType = KeyType }; var paramTrackers = specification.GetIdsForBackTrack(Factory); foreach (var paramTracker in paramTrackers) { parameters[sqlParameterPos++].BackTrack = paramTracker; } specifications.Add(specification); } return(specifications); }