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

Откуда:
Сообщений: 36
Есть процедура которая вызывает функцию, в функцию идут параметры, один из которых текстовая строка
В функции выполняется запрос с входящими параметрами,
так вот эту текстовую строку нужно преобразовать так чтобы она вошла в запрос, одно значение все нормально проходит, более нифига не считает
так вот сам вопрос, как єто сделать? (sp_executesql - не предлагать, в функции не катит)
5 июл 04, 17:01    [785334]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Кто-нибудь понял вопрос?
5 июл 04, 17:06    [785356]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
To GreenSunrise: Support... What can we ask from users if even professional can NOT explain what he wants!
5 июл 04, 17:12    [785385]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
JibSkeart
Member

Откуда: Из далекой галактики
Сообщений: 19870
2GreenSunrise
я чуть чуть ...
Ecть процедура которая вызывает функцию ...



 ш
(';')
(V),(V),,
JS
5 июл 04, 17:23    [785418]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
KOLCHOZ_POSTEVENT
Guest
Это проходит
where string_pole =@param
А это
where string_pole like '%'+@param+'%'
нет?
5 июл 04, 17:24    [785423]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
Юра С.
Member

Откуда:
Сообщений: 36
Извините если не правильно высказался, думаю куски из текста кое-что прояснят:
Процедура
...
OPEN group_cursor
FETCH NEXT FROM group_cursor INTO @Ind, @Formula, @NameArticle
WHILE @@FETCH_STATUS = 0
BEGIN
set @QueryString = 'update #Parser set Result='+@Formula
set @QueryString = REPLACE ( @QueryString, 'dbo.GroupSum(', 'dbo.GroupSum('''+@PointList+''',')
print @QueryString
execute sp_executesql @QueryString,
N'@Result Float', @Result

select @Result=Result from #Parser
insert into #BalansTMP (Article,Point,Summ) values (@NameArticle, @PointList, @Result)
FETCH NEXT FROM group_cursor INTO @Ind, @Formula, @NameArticle
END
CLOSE group_cursor
DEALLOCATE group_cursor
...
Тут вызывается функция dbo.GroupSum допустим с параметрами ('100',1,'А')
Сама функция
....
select @Result = sum(A.summ)
from
(
select bl.AmountRestGRN*bs.TypePlus as Summ
from dbo.BL_Balans bl, dbo.BL_BalansArticle bs
where bl.BsNo = bs.BsNo
and bs.parentID = @IND
and TypeNo=@Type
and bl.Point in (@Point)
) A
....
Так вот если передавать Point='100' или 100 то все работает, мне нужно чтобі при передаче '100,200' аналогично все работало,т.е. нужно чтобы результат запроса был
select @Result = sum(A.summ)
from
(
select bl.AmountRestGRN*bs.TypePlus as Summ
from dbo.BL_Balans bl, dbo.BL_BalansArticle bs
where bl.BsNo = bs.BsNo
and bs.parentID = @IND
and TypeNo=@Type
and bl.Point in (100,200)
) A
а не
select @Result = sum(A.summ)
from
(
select bl.AmountRestGRN*bs.TypePlus as Summ
from dbo.BL_Balans bl, dbo.BL_BalansArticle bs
where bl.BsNo = bs.BsNo
and bs.parentID = @IND
and TypeNo=@Type
and bl.Point in ('100,200')
) A

как это преобразовать?
5 июл 04, 17:25    [785427]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
Replace
and bl.Point in (@Point)
with
and CHARINDEX(','+bl.Point+',',','+@Point+',')>0
5 июл 04, 17:36    [785474]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Тут поиск неплохой...
ArraysAndListsInSQLServer
5 июл 04, 17:39    [785482]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
And replace
WHILE @@FETCH_STATUS = 0
BEGIN
set @QueryString = 'update #Parser set Result='+@Formula
set @QueryString = REPLACE ( @QueryString, 'dbo.GroupSum(', 'dbo.GroupSum('''+@PointList+''',')
print @QueryString
with
Сложение символьных полей в запросе
5 июл 04, 17:40    [785490]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
BugsBunny
To GreenSunrise: Support... What can we ask from users if even professional can NOT explain what he wants!

5 баллов!
5 июл 04, 17:40    [785491]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
And this one is very recommended:
buser
Тут поиск неплохой...
ArraysAndListsInSQLServer
5 июл 04, 17:44    [785504]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
KOLCHOZ_POSTEVENT
Guest
Без придиронов,я уже вот-вот должен линять в джунгли.
','+convert(varchar(20),bl.Point)+',' like '%,'+@param+',%'
От in романтики придётся отказатся в пользу символьного сравнения.
5 июл 04, 17:48    [785522]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
Юра С.
Member

Откуда:
Сообщений: 36
BugsBunny спасибо, все заработало :)
5 июл 04, 17:56    [785554]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать???  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
KOLCHOZ_POSTEVENT
Без придиронов,я уже вот-вот должен линять в джунгли.
','+convert(varchar(20),bl.Point)+',' like '%,'+@param+',%'
От in романтики придётся отказатся в пользу символьного сравнения.

Also should work
5 июл 04, 17:58    [785565]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить