Hej! Jag tror inte det är möjligt. Det enda jag kan komma på är att lägga till en extra select-sats för varje select. Typ : Varför inte arbeta med statiska "temporära" tabeller?Resultat-set
Jag undrar om det går att sätta ett namn på ett resultat-set i SQL-server så att det namnet man satt går att nå utifrån. Det vill säga, i en stored procedure med flera SELECT-sats som innehåller samma kolumner men olika data ska man kunna referera till ett namn på ett specifikt resultat-set.
/TomasSv: Resultat-set
select 'DataCompleteOrders'
union
select 'DataIncompleteOrders'
...
select * from Order where Status=1 -- Complete orders
select * from Order where Status=0 -- Incomplete orders
...
Det är ju inte exakt det du är ute efter, men jag antar att du vill att din kod skall fungera oavsett om SQL-satserna flyttas runt i SP:n och i princip kan man ju uppnå det med ovanstående metod. Man blir ju dock tvungen att i datalagret kolla i tabell 0 i vilken ordning resultaten kommer i. Eventuellt kan man ju i den första selecten även lägga till vilket index tabellerna kommer att få i datasetet. Känns dock lite omständigt...
Sv: Resultat-set
Dvs. skapa en tabell med det data du vill arbeta med genom att bygga den i SP'n...
Göra klart operationen och sedan droppa "temp"-tabellen... Dvs inte SELECT kol INTO #temptabell FROM tabell utan skapa en riktig tabell med CREATE TABLE i sql sträng och sedan göra det tilltänkta och sedan DROP TABLE. Lite gammal trevlig och innovativ dynamisk transact-sql mao...
DECLARE @sqlstr varchar(8000) <---- eller varchar(max) om SQL Server 2005
Bygga upp strängen med ett gäng frågor...
EXEC (@sqlstr)
fasen jag måste läsa vad ni frågar om... hehe
Svaret är dynamisk SQL och bygga en sträng med frågor som du sedan exekverar med EXEC (@str)
För varje ny SELECT lägg till UNION innan... Till exempel...
DECLARE @sqlstr varchar(max), @rowget varchar(max), @pos int
SET @pos=0
DECLARE cursorn CURSOR FOR SELECT tabnamn FROM tablista ???
OPEN cursorn
FETCH NEXT FROM cursorn INTO @rowget
DO UNTIL @@fetch_status <> 0 (eller hur det nu var med den "trött" sen hjälper whiskyn till *ler)
BEGIN
IF @pos <> 0 SET @sqlstr=@sqlstr + ' UNION '
SET @pos=1
set @sqlstr = isnull(@sqlstr, '') + @rowget
FETCH NEXT FROM cursorn INTO @rowget
END
CLOSE cursorn
DEALLOCATE cursorn
EXEC (@sqlstr)
Reserverar mig för lite syntaxfel och liknande men du förstår nog innebörden...
Eller återigen... läs Mattias
Bygg en temporär tabell med resultaten och avsluta med göra select mot den