MSSQL - ADO. Передать в ХП массив параметров
От: trophim Россия  
Дата: 29.05.10 20:58
Оценка:
[MSSQL 2005 через ADO на С++]
Есть ХП, которая принимает N параметров (ну, скажем, int, bit и еще кой-чего, не суть...). Так как ХП довольно часто вызывается, то хотелось бы не вызывать ее 10 раз, а за один вызов передать ей сразу массив из этих параметров (т.е. массив из 10 элементов, в каждом из которых N параметров). Каким образом этого добиться в ADO?
Может передавать ей на вход XML, а уже в самой процедуре из него извлекать данные?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Let it be! — Давайте есть пчелу!
Re: MSSQL - ADO. Передать в ХП массив параметров
От: Lloyd Россия  
Дата: 29.05.10 21:02
Оценка: 1 (1)
Здравствуйте, trophim, Вы писали:

T>Может передавать ей на вход XML, а уже в самой процедуре из него извлекать данные?


Да, так тоже делают.
Re: MSSQL - ADO. Передать в ХП массив параметров
От: ZAMUNDA Земля для жалоб и предложений
Дата: 30.05.10 10:19
Оценка: 4 (1)
Здравствуйте, trophim, Вы писали:

Уже было здесь
Автор:
Дата: 16.05.07
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re: MSSQL - ADO. Передать в ХП массив параметров
От: MasterZiv СССР  
Дата: 31.05.10 20:36
Оценка:
trophim wrote:

> Есть ХП, которая принимает N параметров (ну, скажем, int, bit и еще

> кой-чего, не суть...). Так как ХП довольно часто вызывается, то хотелось
> бы не вызывать ее 10 раз, а за один вызов передать ей сразу массив из
> этих параметров (т.е. массив из 10 элементов, в каждом из которых N
> параметров). Каким образом этого добиться в ADO?

Смысла это делать нет никакого. Даже если бы и можно было.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: MSSQL - ADO. Передать в ХП массив параметров
От: trophim Россия  
Дата: 01.06.10 17:48
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>trophim wrote:


>> Есть ХП, которая принимает N параметров (ну, скажем, int, bit и еще

>> кой-чего, не суть...). Так как ХП довольно часто вызывается, то хотелось
>> бы не вызывать ее 10 раз, а за один вызов передать ей сразу массив из
>> этих параметров (т.е. массив из 10 элементов, в каждом из которых N
>> параметров). Каким образом этого добиться в ADO?

MZ>Смысла это делать нет никакого. Даже если бы и можно было.


Откуда такая уверенность? Каково обоснование? Я до конца не уверен (иначе б не спрашивал), но разве накладные расходы не будут меньше? Просто это ХП, которая выполняет insert и у меня будет возможность вставлять эти десять записей в 1 транзакции вместо 10 отдельных транзакций. Разве сам факт вызова ХП не вносит издержек, или они несравнимы с тем временем которое отнимает непосредственно выполнение самой ХП?

Может альтернативой будет самому явно стартовать транзакцию и самому ее закрывать и тогда не будет смысла передавать в ХП массив?
Я верно понял мысль?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Let it be! — Давайте есть пчелу!
Re[3]: MSSQL - ADO. Передать в ХП массив параметров
От: MasterZiv СССР  
Дата: 02.06.10 22:11
Оценка: 4 (1)
trophim wrote:

> MZ>Смысла это делать нет никакого. Даже если бы и можно было.

>
> Откуда такая уверенность? Каково обоснование? Я до конца не уверен
> (иначе б не спрашивал), но разве накладные расходы не будут меньше?

Если и будут меньше, то на мизерные какие-то величины.

> Просто это ХП, которая выполняет insert и у меня будет возможность

> вставлять эти десять записей в 1 транзакции вместо 10 отдельных
> транзакций.

Это ты ошибаешься. Транзакции от процедур никак не зависят. А процедуры
от транзакций. Ты и не посылая пачкой 10 вызовов можешь это
всё в одну транзакцию сделать. Кстати, скорость вставки от
этого тоже не очень сильно зависит. Где-то на 10-20 вставок в одной
транзакции у тебя будет подъём производительности, потом -- уже всё равно.

Разве сам факт вызова ХП не вносит издержек,

Вносит, но только если это не вызов процедуры. Если это RPC -вызов
процедуры, он почти мгновенен.

или они
> несравнимы с тем временем которое отнимает непосредственно выполнение
> самой ХП?

Вот именно. Несравнимы. Гораздо меньше.

> Может альтернативой будет самому явно стартовать транзакцию и самому ее

> закрывать и тогда не будет смысла передавать в ХП массив?

смысла передавать в ХП массив по-любому нет. А транзакции можно конечно
стартовать и комитить.

> Я верно понял мысль?


Нет, но в общем и этот ход твоей мысли хорош.

В общем я хотел сказать, что по сравнению с основными действиями процедуры
эти выигрышы все очень незначительны.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.