|
C# NextResult();
|
|||
---|---|---|---|
#18+
Скажите пожалуйста, пытаюсь прочитать данные из результатов хранимой процедуры. Эта процедура на сервере состоит из курсора с различными результирующими наборами. Когда я пытаюсь читать данные на клиенте из этой ХП, то читается только первый результирующий набор. авторcommand_r.NextResult(); - возвращает false. Как правильно читать данные из курсора? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 15:00 |
|
C# NextResult();
|
|||
---|---|---|---|
#18+
vah, код "курсора с различными результирующими наборами" покажите. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 15:02 |
|
C# NextResult();
|
|||
---|---|---|---|
#18+
skyANA, авторALTER PROCEDURE [dbo].[sp_print_excel] ( @id_zayavka int ) AS BEGIN DECLARE @id_doc INT,@kol INT,@kolDog INT SELECT @kolDog=kol_exempl_dog from dbo.q_main_zayavka WHERE id=@id_zayavka SET @kolDog=ISNULL(@kolDog,0) SET @kol=1 WHILE @kolDog>=@kol BEGIN DECLARE Cur CURSOR FOR SELECT id from dbo.q_main_document WHERE id_zayavka=@id_zayavka OPEN Cur FETCH NEXT FROM Cur INTO @id_doc WHILE @@FETCH_STATUS = 0 BEGIN SELECT 1 ord, 'БК-'+ltrim(STR(num_bk)) val from dbo.q_main_zayavka zaya WHERE id=@id_zayavka UNION SELECT 2 ord, zaya.user_bk_str from dbo.q_main_zayavka zaya WHERE id=@id_zayavka UNION SELECT 3 ord, 'Инв. № БЛ-'+ltrim(STR(doc.num_inv)) from dbo.q_main_document doc WHERE id=@id_doc UNION SELECT 4 ord, doc.pereplet_original from dbo.q_main_document doc WHERE id=@id_doc UNION SELECT 5 ord, 'Экз. № '+ ltrim(STR(@kol)) from dbo.q_main_document doc WHERE id=@id_doc UNION SELECT 6 ord, 'Том '+ ltrim(STR(doc.tom)) from dbo.q_main_document doc WHERE id=@id_doc UNION SELECT 7 ord, 'Инв. № БЛ-'+ltrim(STR(doc.num_inv)) from dbo.q_main_document doc WHERE doc.id_zayavka=@id_zayavka FETCH NEXT FROM Cur INTO @id_doc END CLOSE Cur DEALLOCATE Cur SET @kol=@kol+1 END END ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 15:09 |
|
C# NextResult();
|
|||
---|---|---|---|
#18+
Ярко выраженная "императивность головного мозга", как выражается один из участников раздела по MSSQL. Зачем здесь вообще ХП? Всё решается одним запросом, в крайнем случае - инлайновой функцией. А NextResult возвращает только один набор, потому что ХП отдает не один резалтсет, а много (столько, сколько итераций в курсорном цикле). Ну, а SqlDataReader не работает с MARS. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 15:27 |
|
C# NextResult();
|
|||
---|---|---|---|
#18+
vah, странно, но такой код у меня прекрасно работает: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
P.S.: а процедурка Ваша - УГ :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 15:44 |
|
C# NextResult();
|
|||
---|---|---|---|
#18+
vah, skyANA, а у вас случайно нет красивого механизма выгрузки DataTable в Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 16:12 |
|
C# NextResult();
|
|||
---|---|---|---|
#18+
vah, что такое красивый механизм и о какой версии Excel речь? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 16:34 |
|
|
start [/forum/topic.php?fid=20&msg=38573186&tid=1403200]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 148ms |
0 / 0 |