Delirium
16-02-2011, 02:55
Столкнулся с нерешаемой пока проблемой.
Имеется процедура такого вида:
ALTER PROCEDURE [dbo].[sp_ReturnMagazineListForSearch] (@doc_ids NVARCHAR(MAX))
AS
BEGIN
DECLARE @str NVARCHAR(MAX)
SET @str = 'SELECT distinct id, onControl, SendTo FROM View_Magazines where id in (' + cast(@doc_ids as char) + ')'
EXEC sp_executesql @str
END
Т.е. процедура возвращает список документов, где ID попадает в указанный мною список типа int.
Пример готовой строки:
SELECT distinct id, onControl, SendTo FROM View_Magazines where id in (69,72,74,79,81,82,87,89,90,95,97,98,103,105,106,111,113,114,119,121,122,127)
Все бы ничего, все работает, до определенного момента:
В базе 28000 тестовых записей, у них у всех номер, к примеру, равен 25.
При формировании поиска по номеру возвращается готовая строка, длина которой более 33 000 символов.
NVARCHAR(MAX) - всего 8000 символов. Использовать TEXT, NTEXT в процедуре не разрешается (The text, ntext, and image data types are invalid for local variables.). Вопрос - как обойти это ограничение?
Имеется процедура такого вида:
ALTER PROCEDURE [dbo].[sp_ReturnMagazineListForSearch] (@doc_ids NVARCHAR(MAX))
AS
BEGIN
DECLARE @str NVARCHAR(MAX)
SET @str = 'SELECT distinct id, onControl, SendTo FROM View_Magazines where id in (' + cast(@doc_ids as char) + ')'
EXEC sp_executesql @str
END
Т.е. процедура возвращает список документов, где ID попадает в указанный мною список типа int.
Пример готовой строки:
SELECT distinct id, onControl, SendTo FROM View_Magazines where id in (69,72,74,79,81,82,87,89,90,95,97,98,103,105,106,111,113,114,119,121,122,127)
Все бы ничего, все работает, до определенного момента:
В базе 28000 тестовых записей, у них у всех номер, к примеру, равен 25.
При формировании поиска по номеру возвращается готовая строка, длина которой более 33 000 символов.
NVARCHAR(MAX) - всего 8000 символов. Использовать TEXT, NTEXT в процедуре не разрешается (The text, ntext, and image data types are invalid for local variables.). Вопрос - как обойти это ограничение?