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

Откуда:
Сообщений: 193
А можно ли передать в переменную хранимой процедуры типа int
не одно число а сразу несколько
например 2,3,4,5,10 ???? и если можно, то как?
3 июл 03, 08:18    [249474]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Передавай в виде строки через запятую, а внутри хп парси. Можно написать функцию, которая бы получала строку, а возвращала таблицу.
3 июл 03, 08:28    [249482]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
Dmit
Member

Откуда:
Сообщений: 193
А что значит "парси" и как это делается?
3 июл 03, 08:30    [249484]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Тебе, собственно, что нужно то? Из интов строку составить или из строки чисел получить их список в виде таблицы?
3 июл 03, 08:34    [249487]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
Dmit
Member

Откуда:
Сообщений: 193
мне нужно передавать в переменную ряд чисел и потом в запросе делать так
select * from table1
where
id in(@переменная)
или так нельзя делать?
а значение этой переменной было не одно число а ряд
например @переменная=2,3,4,5
3 июл 03, 08:37    [249492]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Отчего же? Можно...
3 июл 03, 08:40    [249493]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
Dmit
Member

Откуда:
Сообщений: 193
tpg
и как????
3 июл 03, 08:41    [249494]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Не так, конео, как ты пишешь, а например так
create procedure MyProc

@par varchar(8000)
as
@par='select '+replace(@par, ',', ' select union all ')
ceate table#t (id int)
insert into #t (id) exec @par
select t.*
from table1 t join
#t on t.id=#t.id
drop table #t
3 июл 03, 08:48    [249502]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 Dim

Так как ты хочешь, через IN, можно будет сделать тока через динамический запрос. А парсить - значит из строки с числами через запятую, сделать таблицу с записью для каждого числа...
3 июл 03, 08:49    [249503]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
Белов Владимир
Member

Откуда: Москва
Сообщений: 1716
Как сказал pkarklin передавай параметры, как строку. Параметры будут разделены запятой. Пишешь ф-цию или берешь готовую (см. последнии рассылки - статья от Glory) - которая будет возвращать таблицу
Например


Declare
@str_par varchar(8000)

select @str_par = '8, 10, 25, 10, 1'

delete from MyTable where ID in (select result from dbo.StringToTable(@str_par)
3 июл 03, 08:49    [249504]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
Dmit
Member

Откуда:
Сообщений: 193
что то не могу найти эту самую статью от Glory
3 июл 03, 09:03    [249518]     Ответить | Цитировать Сообщить модератору
 Re: Передача параметров  [new]
Белов Владимир
Member

Откуда: Москва
Сообщений: 1716
https://www.sql.ru/subscribe/2003/146.shtml#9
3 июл 03, 09:17    [249530]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить