Внутри хранимой процедуры я заполняю таблицу элементов (#Items). Просто основная информация о них. Однако для каждого предмета мне нужно убедиться, что я могу продать его, и для этого мне нужно выполнить много проверок. Чтобы сохранить хранимую процедуру несколько удобной для обслуживания, я переместил логику в другую хранимую процедуру.
Каков наилучший способ вызова хранимой процедуры для каждого элемента в временной таблице?
Как у меня сейчас, я применяю столбец идентификаторов, а затем просто выполняю цикл while, выполняя хранимую процедуру для каждой строки и вставляя результат проверки во временную таблицу. (#Validation)
Однако теперь, когда эта логика изменилась, и между созданием #Items и выполнением цикла удаляются некоторые записи, что портит цикл while, поскольку Identity больше не равен счетчику.
Я мог бы справиться с этим, отбросив столбец идентификации и применив его перед циклом while, но мне было просто интересно, есть ли лучший способ. Есть ли способ получить определенную строку по индексу, если я применю предложение order by?
Я знаю, что могу сделать курсор, но это боль в заднице для меня. Кроме того, производительность вызывает некоторое беспокойство, будет ли быстрая перемотка курсора только для чтения лучшим вариантом, чем цикл while? Число строк в таблице #Items не так велико, может быть, не более 50, но хранимая процедура будет вызываться довольно часто.