Как добавить #temp таблицы - PullRequest
       2

Как добавить #temp таблицы

0 голосов
/ 29 октября 2010

Я сформировал несколько временных таблиц в моем запросе (TSQL), например - # temphold1, # ​​temphold2, # temphold3 ..... # temphold10. Каждая временная таблица имеет разные схемы (разные столбцы), каждая из которых получена путем группировки данных из разных таблиц с конкретными условиями. Мне нужно определить способ перенести все эти временные таблицы в пользовательский интерфейс и отобразить каждую таблицу отдельно. Есть ли способ, которым я могу добавить все временные таблицы с определенным индексатором, который я могу получить в пользовательском интерфейсе.

спасибо за любой ответ.

Ответы [ 2 ]

1 голос
/ 29 октября 2010

Нет, такого индексатора нет.

Однако SQL Server и ADO.NET поддерживают возврат нескольких наборов результатов, выбирая каждую таблицу по очереди.

См. howto в MSDN (как обрабатывать несколько результатов с помощью DataReader в Visual C # .NET).

Итак, в вашей хранимой процедуре:

-- after populating your temp tables:
SELECT * FROM #table1
SELECT * FROM #table2
SELECT * FROM #table3

По сути, после прочтения первогонабор записей, вы вызываете NextResult() в DataReader, чтобы получить результаты следующего выбора:

while(dr.Read())
{
   // process data from #table1
}

dr.NextResult();

while(dr.Read())
{
   // process data from #table2
}

dr.NextResult();

while(dr.Read())
{
   // process data from #table3
}
0 голосов
/ 29 октября 2010

Если вы возвращаете результаты в C #, вы можете сделать это с помощью DataAdapter следующим образом:

using (SqlConnection conn = new SqlConnection("your connection string")) {
    SqlParameter[] sqlParams = new SqlParameter[] {
        new SqlParameter("@param1",10),
        new SqlParameter("@param2","test")
    };
    conn.Open();
    SqlDataAdapter sa = new SqlDataAdapter("spStoredProcName", conn);
    sa.SelectCommand.CommandType = CommandType.StoredProcedure;
    sa.SelectCommand.Parameters.AddRange(sqlParams);
    DataSet ds = new DataSet();
    sa.Fill(ds);
    //ds.Tables[0] == first table
    //ds.Tables[1] == second table
    //... etc.
    //Do whatever you need to here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...