Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Использование в хранимой процедуре строковой переменной

Ответить
Настройки темы
MSFT SQL Server - Использование в хранимой процедуре строковой переменной

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Столкнулся с нерешаемой пока проблемой.
Имеется процедура такого вида:


Код: Выделить весь код
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.). Вопрос - как обойти это ограничение?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 02:55, 16-02-2011

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


А почему не держать таблицу айдишек в таблице?!

Отправлено: 13:10, 17-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Busla, этот запрос формируется динамически, поэтому только так.
Проблема решена, надо было убрать лишнее преобразование cast(@doc_ids as char), т.к. @doc_ids уже и так строковая. В итоге формируется строка типа nvarchar(MAX) длиной, ограниченной только памятью компьютера.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 00:53, 18-02-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Использование в хранимой процедуре строковой переменной

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. NiOl Скриптовые языки администрирования Windows 7 31-01-2019 19:58
MSFT SQL Server - Какие символы нельзя использовать в имени хранимой процедуры? Cognolio Программирование и базы данных 3 09-07-2009 01:59
C/C++ - [решено] строковой парсинг Surround Программирование и базы данных 2 17-03-2008 16:51
php деление значения строковой переменной Guest Вебмастеру 4 14-10-2004 17:12
Как в Linux из C++ обратится к Fortran'овской процедуре? Zar Программирование и базы данных 3 03-09-2004 21:51




 
Переход