Страницы

Поиск по вопросам

Показаны сообщения с ярлыком oledb. Показать все сообщения
Показаны сообщения с ярлыком oledb. Показать все сообщения

вторник, 10 декабря 2019 г.

Как получить два набора данных (Таблицы или Reader) из двух выборок SQL?

#c_sharp #cpp #sql #sql_server #oledb


В Microsoft SQL Server Managment Studio большой запрос возвращает все выборки. Как
сделать что б после Command.Execute получить програмно все выбранные таблицы. Т.е. 

create PROCEDURE [dbo].p1  begin
   select 1 select 2,3   -- выборка
end
/*results:
1

2  3*/


Что б дало две таблицы а не одну. Да запрос можно "разделить" на два, но до тех пор
пока нет связи между ними через локальные переменные.  Можно конечно и их передать,
но Studio ловит две три таблицы из выполняемой хранимой  процедуры.

1) Пробовал OleDb - там дополнительных курсоров не получилось получить. Думаю что
поддержка нескольких таблиц заложена в sqlncli.dll. 2) Возможно как-то можно средствами
sql сделать такую выборку, что б сложить таблицы в таблицу (курсорное поле), или например
с помощью sp_msforeachtable.
    


Ответы

Ответ 1



Попробуйте поработать с объектом ADO Recordset для С++. Пример работы с Recordset в VBA: Dim rsTree As ADODB.Recordset Dim rsTreeGrp As ADODB.Recordset Dim rsGrp As ADODB.Recordset Set rsTree = ExecuteRS("usp_pct_CatList", 2, 0, "") Set rsTreeGrp = rsTree.NextRecordset() Set rsGrp = rsTreeGrp.NextRecordset() Процедура usp_pct_CatList возвращает три выборки.

суббота, 27 октября 2018 г.

Как получить два набора данных (Таблицы или Reader) из двух выборок SQL?

В Microsoft SQL Server Managment Studio большой запрос возвращает все выборки. Как сделать что б после Command.Execute получить програмно все выбранные таблицы. Т.е.
create PROCEDURE [dbo].p1 begin select 1 select 2,3 -- выборка end /*results: 1
2 3*/
Что б дало две таблицы а не одну. Да запрос можно "разделить" на два, но до тех пор пока нет связи между ними через локальные переменные. Можно конечно и их передать, но Studio ловит две три таблицы из выполняемой хранимой процедуры.
1) Пробовал OleDb - там дополнительных курсоров не получилось получить. Думаю что поддержка нескольких таблиц заложена в sqlncli.dll. 2) Возможно как-то можно средствами sql сделать такую выборку, что б сложить таблицы в таблицу (курсорное поле), или например с помощью sp_msforeachtable.


Ответ

Попробуйте поработать с объектом ADO Recordset для С++.

Пример работы с Recordset в VBA:
Dim rsTree As ADODB.Recordset Dim rsTreeGrp As ADODB.Recordset Dim rsGrp As ADODB.Recordset Set rsTree = ExecuteRS("usp_pct_CatList", 2, 0, "") Set rsTreeGrp = rsTree.NextRecordset() Set rsGrp = rsTreeGrp.NextRecordset()
Процедура usp_pct_CatList возвращает три выборки.