Форум: "Базы";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизВходной параметр хранимой процедуры Найти похожие ветки
← →
AlAnNik (2006-02-02 12:59) [0]User выбирает в Дереве, или в ЛистВью, или в Гриде несколько узлов (строк). Это внешние ключи. Их нужно передать в качестве input параметра в ХП. В BOL сказано, что курсор может быть только выходным параметром. Сделал так:
1. Передаю строку типа "123,129,137,...160"
2. В ХП создаю временную таблицу #_T
3. Инсерт этих ключей в #_T динамическим запросом
4. При отборе данных ...WHERE Id IN (SELECT ID FROM #_T)
Но как-то это коряво.
Подскажите как грамотно передать в ХП список ключей и там обработать нужные строки
← →
Nikolay M. © (2006-02-02 13:14) [1]http://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml
← →
Ega23 © (2006-02-02 13:15) [2]А по другому - никак. Или через строку с N ключами, или N раз SP дёргать.
Хотя можно что-то вроде этого попробовать сделать:
create procedure MyProc
@IDStr varchar(1000) =""
As
Set NoCount On
Declare
@aSQL varchar(8000);
Set @aSQL="Select * into #Temp from Table 1 where ID in ("+@IDStr+")"
exec @aSQL
Set NoCount OFF
Select * from #Temp
Drop Table #Temp
return(0)
← →
Nikolay M. © (2006-02-02 13:20) [3]
> Ega23 © (02.02.06 13:15) [2]
> А по другому - никак.
По моей ссылке лежит описание 7 методов.
Лично я для небольших наборов ID-шек использую XML.
← →
AlAnNik (2006-02-02 13:26) [4]>Ega23 [2]
Так я и делал.
>Nikolay_N [1]
Скачал буду читать.
Всем спасибо!!
← →
vuk © (2006-02-02 14:01) [5]У нас используется именно разбор списка в таблицу. Причем разбор делается функцией, возвращающей таблицу. В результате запросы выглядят примерно так:
select
...
from
dbo.SomeTable t1 join
dbo.fnUTIL_ParseValueList(@ValueList, ",") vl on vl.value = t1.id
...
← →
Ega23 © (2006-02-02 14:08) [6]
> Nikolay M. © (02.02.06 13:14) [1]
Интересная статья...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c