Учитывая хранимую процедуру в SQL Server, которая имеет несколько операторов select
, есть ли способ работать с этими результатами отдельно при вызове процедуры?
Например:
alter procedure dbo.GetSomething
as
begin
select * from dbo.Person;
select * from dbo.Car;
end;
В .NET, если я вызываю этот proc, я могу использовать SqlDataReader
для перемещения между двумя результирующими наборами, поэтому я могу легко найти всех людей и автомобили. Однако в SQL, когда я выполняю proc напрямую, я получаю оба набора результатов.
Если я вызываю:
insert @myTempTable
exec dbo.GetSomething;
Затем это ошибки, потому что определение столбца не совпадает. Если каким-то образом Person и Car имеют одинаковые столбцы, он объединяет их вместе, а @myTempTable получает все записи из обеих таблиц, что, очевидно, тоже не хорошо.
Я могу определить новые пользовательские типы, представляющие два набора результатов, и сделать эти выходные параметры вместо нескольких операторов select
, но мне интересно, есть ли лучший способ - каким-то образом вывести оба результата во временные таблицы, или зацикливание результатов, или что-то еще.
ИЗМЕНИТЬ
На самом деле, посмотрев более внимательно, даже параметры выходной таблицы не решают этого - они только для чтения, и это все еще верно в SQL 2012. (Подключить билет с просьбой об этом добавляется)