Pobierz dane z procedury składowanej, która ma wiele zestawów wyników
Dana procedura przechowywana w SQL Server, który ma wieleselect
instrukcje, czy istnieje sposób na osobną pracę z tymi wynikami podczas wywoływania procedury?
Na przykład:
alter procedure dbo.GetSomething
as
begin
select * from dbo.Person;
select * from dbo.Car;
end;
W .NET, jeśli wywołam ten proc, mogę użyć aSqlDataReader
poruszać się między dwoma zestawami wyników, dzięki czemu mogę łatwo odzyskać wszystkich ludzi i samochody. Jednak w SQL, gdy wykonuję proc bezpośrednio, otrzymuję oba zestawy wyników.
Jeśli zadzwonię:
insert @myTempTable
exec dbo.GetSomething;
Następnie błąd, ponieważ definicja kolumny nie pasuje. Jeśli przypadkiem osoba i samochód mają te same kolumny, łączy je razem, a @myTempTable pobiera wszystkie rekordy z obu tabel, co oczywiście też nie jest dobre.
Mogę zdefiniować nowe typy niestandardowe reprezentujące dwa zestawy wyników i utworzyć te parametry wyjściowe zamiast wielokrotnościselect
stwierdzenia, ale zastanawiam się, czy jest lepszy sposób - jakiś sposób na wyciągnięcie obu wyników do tabel tymczasowych lub zapętlenie wyników, czy coś.
EDYTOWAĆ
Właściwie, po bliższym przyjrzeniu się, nawet parametry tabeli wyjściowej nie rozwiążą tego - są tylko do odczytu, a to wciąż jest prawdą w SQL 2012. (Połącz bilet z prośbą o dodanie tego)