установить имя таблицы результатов в хранимой процедуре - PullRequest
2 голосов
/ 05 января 2011

хранимая процедура, которая возвращает несколько результатов:

CREATE PROCEDURE [dbo].[GetMultipleTable]
AS
BEGIN

   if exists (select something from somewhere where somecondition = 1)
   begin
       select * from firsttable
   end
   select * from secondtable
END

когда мы выполняем хранимую процедуру, используйте метод SqlDataAdapter ' Fill , чтобы заполнить DataSet несколькими таблицами.

DataSet ds;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);

Я могу получить результаты.но я думаю, что мы можем добиться большего, чем это:

var index = 0;
if( ds.Tables.Count > 1 ){
   DataTable first = ds.Tables[index];       
   index++;
   // do something
}
DataTable second = ds.Tables[index];
// do something 

Мне интересно, можем ли мы получить таблицу по имени вместо индекса.как ..

DataTable first = ds.Tables["first"];
// do something
if(ds.Tables.Containts("second"))
{
    DataTable second = ds.Tables["second"];
    // do something
}

вопрос: можно ли задать имя таблицы результатов в хранимой процедуре?

1 Ответ

2 голосов
/ 05 января 2011

Наверное, нет.И в некоторой степени я сомневаюсь, что это хороший способ справиться с этим.Почему бы просто не вернуть пустые наборы результатов в этих случаях, тогда как вы всегда знаете, что означает n-й набор результатов.

Кроме случаев, когда вы отображаете результаты в виде простого текста, вам не нужна сложная логика, разберитесьразличные случаи результата.

Почему вы это делаете?Мистическое желание улучшить производительность?

Для специальных запросов это может быть нормально, но для хранимых процедур.Лучше подумай дважды.

Возможно, на мое отношение повлиял тот факт, что мне пришлось преобразовать такие процедуры в Oracle, и там у вас нет концепции переменного числа наборов результатов.Для каждого набора результатов необходимо заранее указать параметр refcursor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...