Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Работа с процедурой, имеющей несколько параметров типа Value_n, где n от 1 до 100  [new]
Kunj
Member

Откуда:
Сообщений: 2
Добрый день.

Есть процедура
CREATE PROCEDURE procedure
@Text nvarchar(2000) OUT,
@Value_1 nvarchar(50) = NULL, @Value_2 nvarchar(50) = NULL, @Value_3 nvarchar(50) = NULL, ..., @Value_100 nvarchar(50) = NULL
AS
--Тело

, в которой нужно изменить каждый входной параметр (добавить к строке запятую), если она не пустая (иначе ='') и соединить все эти изменённые строки в одну выходную.

Вопрос, как это реализовать в цикле?
18 ноя 13, 15:59    [15149206]     Ответить | Цитировать Сообщить модератору
 Re: Работа с процедурой, имеющей несколько параметров типа Value_n, где n от 1 до 100  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
Kunj,

никак. вместо ста однотипных параметров используйте один параметр табличного типа, например
18 ноя 13, 16:16    [15149379]     Ответить | Цитировать Сообщить модератору
 Re: Работа с процедурой, имеющей несколько параметров типа Value_n, где n от 1 до 100  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Kunj
Добрый день.

Есть процедура
CREATE PROCEDURE procedure
@Text nvarchar(2000) OUT,
@Value_1 nvarchar(50) = NULL, @Value_2 nvarchar(50) = NULL, @Value_3 nvarchar(50) = NULL, ..., @Value_100 nvarchar(50) = NULL
AS
--Тело

, в которой нужно изменить каждый входной параметр (добавить к строке запятую), если она не пустая (иначе ='') и соединить все эти изменённые строки в одну выходную.

Вопрос, как это реализовать в цикле?


Что реализовать в цикле?

Если вы уже накопипастили 100 параметров кто вам мешает накопипастить 100 соединений строк?

И кстати. Процедура может запросто гакнуться. У вас возможный выход по размеру 100*50 = 5000 символов, а выходная переменная только 2000.

И кстати, пересмотрите всю концепцию.
Нафига вам вообще процедура если вы на клиенте создаёте вызов, который сам по себе дороже конкатенации на том-же клиенте?
19 ноя 13, 00:36    [15151719]     Ответить | Цитировать Сообщить модератору
 Re: Работа с процедурой, имеющей несколько параметров типа Value_n, где n от 1 до 100  [new]
Алексей Ку.
Member

Откуда: Дубна
Сообщений: 295
Kunj,

Для проверки на null используйте функцию ISNULL.
Может строки можно всё-таки на клиенте объединять?
19 ноя 13, 09:12    [15152345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить