webForumDet fria alternativet

SP med två recordset

1 svar · 185 visningar · startad av hakan@4u2.se

hakan@4u2.seMedlem sedan aug. 2000333 inlägg
#1

Har en sp som kör 2st sql frågor, nu får jag ut dem som två recordset men jag skulle vilja få ut dem ett bara
sql1='select count(antal) as antal1 from personer1'
sql2='select count(antal) as antal2 from personer2'

SP Kod nu:

exec (@SQL1)
exec (@SQL2)

Skulle vilja så här typ

select @antal1 = (exec (@SQL1))
select @antal2 = (exec (@SQL2))
select @antal1 as antal1, @antal2 as antal2

Men det är lite syntax fel, någon ide?

emissionMedlem sedan dec. 19996 721 inlägg
#2

Det finns många varianter.

Du kan göra en UNION

select count(antal) as antal1 from personer1
union
select count(antal) as antal2 from personer2

Då får du ut ett recordset med två rader

eller en cross join med distinct count

select count(distinct personer1.personid) as antal1,count(distinct personer2.personid) as antal2 from personer1,personer2

...men en cross join är inte särskilt bra ur prestandahänseende. Om det finns något som kan joina personer1 med personer2 så blir det dock ingen cross join, och då kan detta vara ett vettigt alternativ

...eller som du är inne på

declare @antal1 int,@antal2 int
select @antal1 = count(antal) from personer1
select @antal2 = count(antal) from personer2
select @antal1 as antal1, @antal2 as antal2
128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)