Ваша проблема в этой строке:
last_position = next_position + len(c)
Это пропуск потенциальных совпадений. Таким образом, ваш код учитывает только первую, третью и пятую позиции для совпадений. Как вы говорите, правильный ответ приходит от проверки четвертой позиции (индекс == 3). Но вы пропускаете это, потому что каждый раз вы перемещаете длину тестовой строки, а не продвигаетесь вперед только на один символ.
Я думаю, вы хотите:
last_position = next_position + 1
В потоке данных команду OLE DB
можно использовать для выполнения оператора SQL для каждая строка в потоке данных - ( документация MSDN )
Кроме того, вы можете сохранить исходный набор результатов в переменной объекта типа данных и использовать контейнер цикл по каждому элементу
в элементе управления Поток (пример здесь ).
Вам нужно будет использовать задачу «Выполнение SQL». В разделе SQLStatement вы можете добавить код для выполнения хранимой процедуры.
Чтобы передать параметры, используйте? синтаксис и укажите параметры в разделе «Сопоставление параметров».