Удалить больше записей на основе заданных идентификаторов записей с помощью хранимой процедуры - PullRequest
0 голосов
/ 24 мая 2019

Мое приложение использует SQL Server 2014. У него есть таблица с именем Report.У меня есть следующая хранимая процедура для удаления записей.

create procedure delteReportsByIds
    @ids varchar(8000)
as 
begin
    exec ('delete from Report where id in ( '+ @ids +' )')
end

Данные, передаваемые на ids, похожи на

1,4,6

, который удаляет 3 записи с ID, равным 1, 4, 6. Вот проблема.Теперь таблица очень большая, и идентификатор записи достиг 7 цифр, что-то вроде

1380025

Таким образом, хранимая процедура может удалять только до 1000 записей (с 7-значными идентификаторами) за один раз.Кажется, я не могу увеличить лимит 8000.Как я могу удалить 2000 записей с помощью вышеуказанной процедуры за один раз?

1 Ответ

1 голос
/ 24 мая 2019

Для вашего конкретного сценария вы можете попробовать VARCHAR (MAX). Он вмещает до 2 ГБ данных. Но я лично стараюсь избегать динамического SQL, особенно в таких простых сценариях, как ваш. Либо предложение @DaleBurrell в комментариях, либо функция String Split для анализа ввода и присоединения результата к таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...